我遇到与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。 捕获退出事件也很有效,所以基本上我已经有了一切可以监控该过程的关闭事件。
完全相同时,但现在是图像:
processMonitor.StartInfo.FileName = filePath; // Example: @"C:\test.jpg"
这是不成功的..这个过程完美启动,但我无法检测过程是否一直关闭。一个小小的研究向我展示了一个名为:
的过程DLLHOST.EXE(COM代理)
已启动,我无法检测此过程的已退出事件。
有人可以帮助我,或者至少指出我正确的方向吗?
答案 0 :(得分:0)
如果所有其他方法都不起作用,您可以查看WMI:http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspx - 这将要求您进行一些包装工作(或使用包装器,如下所示:http://www.codeproject.com/Articles/21971/WMI-Interface-for-NET)< / p>
您可以作为最后的手段和解决方法使用的另一个选项是轮询进程状态,但对于大多数项目来说,这确实不推荐,并且它听起来不像您想要在项目中执行的操作。
答案 1 :(得分:0)
我认为这与图像的本质有关。打开.txt文件会启动记事本,而打开.jpg会打开一个查看器。有什么方法可以自己键入观众吗?