我是PowerShell的首發,所以也許這是一個愚蠢的問題。PowerShell - 循環雖然MainWindowTitle未找到
這是一個簡單的腳本。我想打開一個本身打開不同窗口的程序。第一個只是一個問我是否想要連接的窗口。使用
[System.Windows.Forms.SendKeys]::SendWait("{TAB}{TAB}{TAB}{TAB}{ENTER}")
我只是確認,我想連接。現在下一個窗口很棘手。加載需要一些時間,我知道它的MainWindowTitle。我不想做的就是寫
Start-Sleep -Milliseconds 20000
爲了等待足夠長的時間。有時會在幾秒鐘內打開,有時甚至會超過20秒。所以我認爲把一些東西放在一個循環中並等待這個過程完全開始是個好主意。這是我做了(什麼不工作...):
while (!$winid) {
Start-Sleep -Milliseconds 1000
$winid = Get-Process |where {$_.MainWindowTitle -like "*windowtitle*"} |select -expand id
write-host $winid
}
我有write-host $winid
展示我的獲取,處理的結果。但是,即使窗口已經打開很長時間,它仍然是NULL。
當我停止我的劇本,只是寫
Get-Process |where {$_.MainWindowTitle -like "windowtitle"} |select -expand id
它的作品!不知道爲什麼...
如何讓腳本檢查是否需要打開窗口並準備好一些擊鍵?
感謝, 托比亞斯
感謝您的回答!我打開的應用程序基本上是創建一個遠程連接。在這樣做的時候,它會打開第一個窗口 - 這將與您的代碼一起工作。但是,當我選擇「連接」,並且因此我得到一個新的進程ID時,該窗口會再次直接關閉。我發現我試圖捕獲的新窗口的窗口名稱在我的腳本完成之前沒有得到正確的命名。我找到了臨時名稱並將其添加到我的腳本中。現在它可以工作。但是,由於您的答案適用於99%的開放應用程序,並且真的有助於我想要做的其他事情,我會將其標記爲正確! – TXP
並感謝您的答覆ForegroundColor小費!總是在學習...... – TXP