嘿,我沒有得到解決, 但也許我的做法就是這樣,你的解決方案。
我玩了一下.net函數並獲取了進程。 過程直接走了,調用資源管理器後...
所以基本功能是
[System.Diagnostics.Process]::Start("explorer.exe", "C:\")
什麼返回過程:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
4 2 392 1140 10 0,00 6328 1 explorer
有沒有一些更多的功能,在它像:
[System.Diagnostics.Process]::Start("explorer.exe", "C:\").WaitForExit()
但沒有任何反應:(
如果你把結果到一個變量,你可以發現的功能和屬性:
$tmp = [System.Diagnostics.Process]::Start("explorer.exe", "C:\")
類型$ TMP。並創下STRG +空格在ISE
然後我通過get-過程歷時過程CMD
$process = get-process -Id ([System.Diagnostics.Process]::Start("explorer.exe", "C:\")).Id
這導致我像一個過程:
> $process
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
0 1 384 120 6 8396 1 explorer
但相同的:這個過程是走了immidiatly :(
我打得周圍,並得到該決議:
$path = "C:\temp\test"
$split = $path.split("\\")
$mainWindowTitle = $split[$split.Length - 1]
$tmp = [System.Diagnostics.Process]::Start("explorer.exe", $path)
sleep -Seconds 2
Get-Process | ? ProcessName -eq explorer | select * | ? MainWindowTitle -eq $mainWindowTitle | select Id
通過此代碼,我可以找到您要查找的流程。 讓我給你解釋一下。
首先我需要路徑和最後一個子目錄。每個瀏覽器進程都有一個mainWindowTitle,它的值是打開的目錄的名稱。
因此,我啓動了資源管理器查找具體路徑,並將最後一個子目錄分開。您需要休息1或2秒,因爲流程需要一段時間,然後才能進入流程列表。 然後我用windowMainTitle等於最後一個子目錄搜索每個資源管理器。
所以現在你得到了processId,它允許你創建一個while循環,並在其中進行睡眠,在那裏你檢查過程是否仍然存在。
唯一的問題是,該窗口無法打開兩次或具有相同名稱的目錄。
但也許你可以使用這段代碼。只是玩耍,看看你能弄清楚什麼。
編輯:
此代碼對我的作品:)
$path = "C:\temp\test"
$split = $path.split("\\")
$mainWindowTitle = $split[$split.Length - 1]
$tmp = [System.Diagnostics.Process]::Start("explorer.exe", $path)
sleep -Seconds 2
$processId = (Get-Process | ? ProcessName -eq explorer | select * | ? MainWindowTitle -eq $mainWindowTitle | select Id).Id
while((get-process -Id $processId).Length -gt 0){
sleep -Seconds 1
$processId = (Get-Process | ? ProcessName -eq explorer | select * | ? MainWindowTitle -eq $mainWindowTitle | select Id).Id
}
# All code after will be executed after window was closed
write-host "Window Closed"
格爾茨Eldo.Ob
這是不容易的。即使啓動一個新實例,它也只是在很短的時間內告訴另一個進程打開該窗口。所以你不能很容易地看到你是否還在身邊。這取決於「在獨立進程中啓動文件夾窗口」的設置,默認情況下它是關閉的。另一個選擇是尋找一個有適當標題的窗口,但這是一個脆弱的方法,將來可能會崩潰,如果他們在該窗口中打開不同的文件夾,則會錯誤地認爲它已經消失。 TL; DR:PowerShell與否,正確的並不是微不足道的,更可能出錯。 – Joey