簡體   English   中英

打開資源管理器 window 並等待它關閉

[英]Open explorer window and wait for it to close

我有一個程序正在打開資源管理器 window 到某個文件夾,但我想在資源管理器 window 關閉后立即執行操作,但如果我使用以下代碼:

Process proc = Process.Start("explorer.exe", "D:\\");
proc.WaitForExit();

它正在根據需要打開資源管理器 window 但 WaitForExit 命令沒有效果,它只是通過它。

是否有其他方法可以打開資源管理器 window,當它被用戶關閉時可以讓我知道?

The Old New Thing很好地解釋了這個問題:

WaitForSingleObject 立即返回的原因是 Explorer 是一個單實例程序(嗯,有限實例)。 當您打開 Explorer window 時,請求將移交給正在運行的 Explorer 副本,並且您啟動的 Explorer 副本退出。 這就是您的 WaitForSingleObject 立即返回的原因。

他提供了一些您可能會使用的解決方案(大量使用 PInvoke),例如使用類似這樣的東西。

最后,您可能更容易使用其他類型的文件瀏覽器,可能來自 C# 庫,您可以控制更多的地方,而不是資源管理器。

無法重新生成錯誤。 剛試過這個:

Process.Start("explorer.exe", "D:\\").WaitForExit();

它會阻塞當前線程並等待直到我關閉資源管理器 windows。 確保您沒有在另一個線程上執行命令,而不是您要阻止的線程。 還要確保通過導入 below.reg 文件將 window 的每個實例設置為啟動explorer.exe的新實例:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"DesktopProcess"=dword:00000001
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer]
"DesktopProcess"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess]
"BrowseNewProcess"="Yes"
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\BrowseNewProcess]
"BrowseNewProcess"="Yes"

您需要重新啟動計算機才能使其生效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM