因此,必须调用另一个实用程序,以便播放声音。要是声音文件采用 .WAV 格式,最好使用 Windows 录音机。对于这一点,至少有两个理由。首先,录音机较为小巧,可以非常快地进行加载;Media Player 要强大得多,但是对于只是播放“嘀嘀”声,太大材小用了。其次,通过传递适当的命令行参数,可以隐式运行录音机;因此,您(或用户)将听到声音,但不会在屏幕上看到录音机。
VBS strSoundFile = "C:\windows\Media\Notify.wav"
VBS Set objShell = CreateObject("Wscript.Shell")
VBS strCommand = "sndrec32 /play /close " & chr(34) & strSoundFile & chr(34)
VBS objShell.Run strCommand, 0, False
VBS Wscript.Sleep 1000
VBS Msgbox "A problem has occurred."作者: xgpolaris 时间: 2007-10-31 12:49
謝謝,收藏到我的腳本中作者: jneyxwry 时间: 2007-12-19 00:10
楼主貌似是管理员。 有几点我可以提一下吗? Windows NT 系统。在没有声音文件的时间 是可以通过脚本直接播放声音,只是声音不是很好听,比如下面用AU3制作的一个 <两子老虎>的音乐文件。就一个脚本,运行就可以听到歌曲。
Func frequency($scale,$melody="C")
If $scale="0" Then Return 0
If $melody="C" Then
Switch $scale
Case "1"
Return 264
Case "2"
Return 297
Case "3"
Return 330
Case "4"
Return 352
Case "5"
Return 396
Case "6"
Return 440
Case "7"
Return 495
EndSwitch
ElseIf $melody="D" Then
Switch $scale
Case "1"
Return 297
Case "2"
Return 334
Case "3"
Return 371
Case "4"
Return 396
Case "5"
Return 446
Case "6"
Return 495
Case "7"
Return 557
EndSwitch
EndIf
SetError(1)
EndFunc
Func book($book,$speed=500,$melody="c")
For $s=1 To StringLen($book)
$frequency=frequency(StringMid($book,$s,1),$melody)
If @error Then ContinueLoop
$Duration=$speed
Switch StringMid($book,$s+1,1)
Case "H"
$frequency=frequency(StringMid($book,$s,1),$melody)*2
Case "L"
$frequency=frequency(StringMid($book,$s,1),$melody)/2
Case "Q"
$Duration=$speed/2
Case "S"
$Duration=$speed*2
EndSwitch
If $frequency=0 Then
Sleep($speed)
Else
Beep($frequency,$Duration)
EndIf
Next
EndFunc
Windows的系统都安装有 Windows Media Player 所以。想要实现在不打开播放器的情况下,播放指定的音频文件,是直接用Windows Media Player 自带的命令可以实现。
例下:
start "C:\Program Files\Windows Media Player\wmplayer.exe" /min "C:\1.mp3"
用start打开 Windows Media Player 用min参数 来播放 C盘下的1.mp3文件。 而且还是隐藏的。