如何将PowerShell的PlayLooping与OK按钮结合实现音频循环至按钮按下
解决方案
核心思路是利用PlayLooping()的异步特性和Popup()的阻塞特性:先启动音频循环播放,再弹出对话框(脚本会阻塞在此处直到用户点击OK),最后停止音频播放。
完整代码如下:
# 初始化音频播放器并指定目标音频文件 $audioPlayer = New-Object System.Media.SoundPlayer('C:\Windows\Media\Ring01.wav') # 启动后台循环播放音频(不阻塞后续代码执行) $audioPlayer.PlayLooping() # 弹出带OK按钮的提示框,脚本将暂停在此处,直到用户点击按钮 $msgBox = New-Object -ComObject Wscript.Shell $null = $msgBox.Popup("ALARM", 0, "警报提示", 0x0) # 用户确认后立即停止音频播放 $audioPlayer.Stop() # 清理COM对象,释放系统资源(可选但推荐) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($msgBox) | Out-Null Remove-Variable msgBox
关键说明
PlayLooping():异步启动音频循环,不会卡住后续的弹窗代码执行Popup():默认会阻塞脚本运行,直到用户点击OK按钮,刚好实现了"播放直到用户确认"的逻辑Stop():用户点击OK后立即终止音频播放,结束循环
内容的提问来源于stack exchange,提问作者user7839656
相关产品推荐
相关产品推荐

