打开资源管理器窗口并等待它关闭

Bri*_*ker 3 c# windows explorer process

我有一个程序打开一个浏览器窗口到某个文件夹,但我想在浏览器窗口关闭后立即执行操作,但如果我使用以下代码:

Process proc = Process.Start("explorer.exe", "D:\\");
proc.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

它根据需要打开资源管理器窗口,但WaitForExit命令没有任何效果,它只是直接通过它.

是否有一种不同的方式打开资源管理器窗口,当用户关闭时,它将能够让我知道?

Sog*_*ger 7

The Old New Thing很好地解释了这个问题:

WaitForSingleObject立即返回的原因是Explorer是一个单实例程序(好的,有限实例).当您打开资源管理器窗口时,请求将被移交给正在运行的资源管理器副本,并且您启动的资源管理器副本将退出.这就是你的WaitForSingleObject立即返回的原因.

他提供了一些解决方案,你大概可以使用(有一些大量使用的PInvoke的),喜欢使用像这样.

最后,您可能更容易使用其他类型的文件浏览器,可能来自您可以更多控制的C#库,而不是资源管理器.