【发布时间】:2013-07-03 14:26:13
【问题描述】:
更新
我有一个与Process.Start(); 相关的问题
我的程序将文件作为进程启动,如下所示:
Process processMonitor = new Process();
processMonitor.StartInfo.FileName = filePath; // Example: @"C:\test.txt"
processMonitor.StartInfo.CreateNoWindow = true;
processMonitor.Exited += new EventHandler(Process_Exited);
processMonitor.EnableRaisingEvents = true;
processMonitor.Start();
// Handle Exited event and display process information.
private void Process_Exited(object sender, EventArgs e)
{
// This code is called on every exit, except images: (Windows Photo Viewer, *jpg, *png, *bmp etc.)
}
这成功地启动了一个进程,notepad.exe 和正确的文件。 捕捉 Exited 事件也有效,所以基本上我已经准备好监控进程的关闭事件。
现在解决问题...
当做完全一样的时候,但现在是一张图片:
processMonitor.StartInfo.FileName = filePath; // Example: @"C:\test.jpg"
这不成功..进程完美启动,但我无法检测到进程是否曾经关闭。一项小研究向我展示了一个名为:
DLLHOST.EXE(COM 代理)
已启动,我无法检测到此进程的 Exited 事件。
谁能帮助我,或者至少指出我正确的方向?
【问题讨论】:
-
您需要发布准确代码。您没有订阅 Exited 事件,将 CreateNoWindow 设置为 true 没有意义。
-
我遇到了一个更奇怪的问题,即
Process从调用Start("http://www.google.com")(在我的系统上打开默认浏览器,即Google Chrome)返回的是null?我想得到它的MainWindowHandle,...但是因为它是null,所以我不能用它做任何事情(在开始之后)。 -
更新得更清楚,就像@HansPassant问的那样