等待程序打开并继续



我正在使用一个虚拟桌面管理powershell脚本在特定的虚拟桌面上打开程序,但我遇到了一个问题,如果程序加载时间过长,就会加载到错误的桌面上。有没有办法让它等到程序完全加载后再继续?

以下是我正在使用的两个文件:启动.ps1

. .VirtualDesktop.ps1
Sleep 1
$Desktop1 = Get-Desktop 0 #Desktop Default
$Desktop2 = Get-Desktop 1 #Desktop To-Do
$Desktop3 = Get-Desktop 2 #Desktop Outlook
$Desktop4 = Get-Desktop 3 #Desktop Music
$Desktop5 = Get-Desktop 4 #Desktop Phone
$OldDesktop = Get-CurrentDesktop

# Open To-Do On To-Do Desktop
$Desktop2 | Switch-Desktop
start shell:AppsFolderMicrosoft.Todos_8wekyb3d8bbwe!App 
Sleep 3
Switch-Desktop $OldDesktop

# Open Outlook on Outlook Desktop
Sleep 1
$Desktop3 | Switch-Desktop
start Outlook
Sleep 5
Switch-Desktop $OldDesktop

# Open Spotify On Music Desktop
Sleep 1
$Desktop4 | Switch-Desktop
start spotify
Sleep 3
Switch-Desktop $OldDesktop

# Open Samsung Dex and Your Phone On Phone Desktop
Sleep 1
$Desktop5 | Switch-Desktop
start SamsungDex
Sleep 5
start shell:AppsFolderMicrosoft.YourPhone_8wekyb3d8bbwe!App
Sleep 3
Switch-Desktop $OldDesktop

功能.p1

https://www.powershellgallery.com/packages/VirtualDesktop/1.0.0/Content/VirtualDesktop.ps1

实现您想要的目标似乎没有太多好的选择。下面的代码可能有效。

function WaitForProcess([System.Diagnostics.Process] $procHandle) {
while (
$null -eq $procHandle.MainWindowTitle `
-or `
$null -eq $procHandle.StartTime
) {
Write-Host 'Sleeping'
Start-Sleep -Milliseconds 500    
}
}
$proc = Start-Process 'Notepad' -PassThru; 
WaitForProcess -procHandle $proc

最新更新