Tag: 进程

Windows Forms应用程序,例如Google Chrome,具有多个进程

有没有办法使用C#来构建容器应用程序,其中每个选项卡实际上都是自己的进程,就像使用Google Chrome一样?

获取进程的PID由Process.start()启动

我正在使用此代码启动可执行文件: Process proc = new Process(); proc.StartInfo.FileName = executablePath; proc.Start(); proc.WaitForInputIdle(); 在这个调用proc.Id它给了我一些整数,这不是真正的进程ID。 在任务管理器中,此进程还有另一个ID,我也使用MS UI Automation访问此应用程序,该应用程序也返回与任务管理器中相同的ID。 所以我的问题是如何获得启动过程的真实进程ID? UPDATE 我发现在Windows 7上它工作正常并返回正确的ID,但不是在Windows XP上。 可能是什么原因? 情景 该应用程序的场景如下。 我有一个正在运行的嵌入式HTTP服务器,它不是由我实现的( 这里是源代码)。 客户端连接到Web服务器并发送运行程序的请求。 在我的服务器的请求处理程序中,我只是使用Process.start()来启动所请求的应用程序。 作为Web服务器,程序为连接到它的每个客户端会话创建线程(我假设如此,因为我没有写它)。 这可以以某种方式帮助识别问题,因为它只存在于Windows XP X86 Service Pack 3上吗?

Process.Close()没有终止创建的进程,c#

我编写了一个C#应用程序,它使用System.Diagnostics.Process类来创建一个进程 Process P1 = new Process(); P1.FileName = “myexe.exe”; 和其他适当的设置。 我把它链接到一个运行大约10分钟的exe文件。 (我正在编写程序来测量程序的运行时间)。 现在介于两者之间我想中止正在运行的进程。 所以我在取消按钮的事件中写道, Process.Close(); 但是在任务管理器中我仍然看到myexe.exe正在运行,它不会被中止。 该怎么办?

重定向控制台应用程序的标准输入

我有一个控制台应用程序,我试图通过重定向过程的标准输入流自动化。 在打开应用程序后的手动模式下,它等待用户输入,如下所示, 我使用重定向的标准输入流创建了该过程。代码片段如下, Process newProcess = new Process(); newProcess.StartInfo.FileName = exeName; newProcess.StartInfo.Arguments = argsLine; newProcess.StartInfo.UseShellExecute = false; newProcess.StartInfo.RedirectStandardOutput = false ; newProcess.StartInfo.CreateNoWindow = false; newProcess.StartInfo.RedirectStandardInput = true; newProcess.Start(); 但是创建这样的过程会产生如下所示的无限循环, 这就像我将Enter键命令连续发送到过程输入流。 谁能指出我在这里做错了什么? 同样,标准输出流重定向在制作后也不起作用 newProcess.StartInfo.RedirectStandardOutput = true 但我可以解决这个问题。 标准流的重定向是否适用于所有控制台应用程序,或者是否有任何exception?

运行提升过程

我正在尝试使用以下代码运行cmd命令: ProcessStartInfo cmd = new ProcessStartInfo(“cmd.exe”); cmd.RedirectStandardInput = true; cmd.RedirectStandardOutput = true; cmd.RedirectStandardError = true; cmd.UseShellExecute = false; cmd.CreateNoWindow = true; cmd.WindowStyle = ProcessWindowStyle.Hidden; Process exec = Process.Start(cmd); exec.StandardInput.WriteLine(“sc create \”BaliService\” binPath= \”{0}\\BaliService.exe\””, Directory.GetCurrentDirectory()); 此命令需要管理员privelages,如果我以管理员身份运行cmd并键入命令它完美运行但不是当我以管理员身份运行此应用程序时。 我已经添加了 每次打开exe时提示uac的清单文件。 我已经看到了关于此的多个问题,他们似乎都建议在提升的应用程序下运行的任何进程将拥有相同的权限,但这对我不起作用。 我试过cmd.Verb = “runas”; 但没有骰子。

如何获取应用程序的父进程的PID

我的winform应用程序由另一个应用程序(父代)启动,我需要确定应用程序的pid,它使用c#启动我的应用程序。