如何监控启动“;dllhost.exe”;

本文关键字:dllhost exe 启动 何监控 监控 | 更新日期: 2023-09-27 18:20:48

已更新

我有一个与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事件。

有人能帮我吗,或者至少给我指明正确的方向?

如何监控启动“;dllhost.exe”;

如果所有其他都不起作用,您可以查看WMI:http://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspx-这将需要你做一些包装工作(或者使用包装器,比如这里的包装器:http://www.codeproject.com/Articles/21971/WMI-Interface-for-NET)

另一个可以作为最后手段和变通方法使用的选项是轮询流程状态,但这确实不建议用于大多数项目,而且听起来肯定不像是你想在项目中做的事情。

我认为这与图像的性质有关。打开.txt文件将打开记事本,而打开.jpg文件将打开查看器。有什么方法可以进入查看器本身吗?