我的脚本在调用消息框或语音输出时停止。 该脚本正在等待完成任务PowerShell中的正常行为。
但是如何在不中断语音输出的情况下执行此脚本呢?
我想不间断地执行这段代码:
[System.Windows.Forms.MessageBox]::Show("stop")
$voice = new-object -com SAPI.SpVoice
$voice.Speak("Hello Stackoverflow!")
[System.Windows.Forms.MessageBox]::Show("done")
喜欢(不工作):
[System.Windows.Forms.MessageBox]::Show("stop")
$job = start-job {
$voice = new-object -com SAPI.SpVoice
$voice.Speak($text)
}
[System.Windows.Forms.MessageBox]::Show("done")
或喜欢(也不工作):
$test = "Hello"
[System.Windows.Forms.MessageBox]::Show("stop")
$backPS = [powershell]::create()
[void] $backPS.AddScript("$voice = new-object -com SAPI.SpVoice
$voice.Speak($test)")
[System.Windows.Forms.MessageBox]::Show("done")
答案 0 :(得分:3)
后台工作方法对我有用:
$job = start-job { (new-object -com SAPI.spVoice).Speak("hi") }
$text
需要传递给后台作业或在后台作业脚本块中定义。
$job = start-job { (new-object -com SAPI.spVoice).Speak($args[0]) } -arg "hi"
其他阻止代码为[System.Windows.Forms.MessageBox]::Show
。你想要它是同步还是异步?