我已经获得了一些使wmplayer
在后台播放的代码,但是在完成后我无法循环播放。关于如何做到这一点的任何想法?
@echo off
set "file=GameMusic.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%file%"
echo Sound.Controls.play
echo do while Sound.currentmedia.duration = 0
echo wscript.sleep 100
echo loop
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000) >sound.vbs
start /min sound.vbs
exit /b
答案 0 :(得分:2)
在vbscript中,您可以使用固定的循环编号执行类似的操作。
测试后你可以摆脱make
!
node-gyp rebuild
或者当我们添加这一行时使用infnite循环:
oPlayer.settings.setMode" loop",True
make
因此,您可以生成一个vbscript文件,并从批处理文件中调用它:
node-gyp rebuild
对于更多 fun ,我在这里添加了一个带语音和ShowBalloonTip功能的打字机:
wscript.echo
答案 1 :(得分:2)
尝试修改此代码并向我提供反馈:
@echo off
set "file=GameMusic.mp3"
(
echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%file%"
echo Sound.settings.volume = 100
echo Sound.settings.setMode "loop", True
echo Sound.Controls.play
echo do while Sound.currentmedia.duration = 0
echo wscript.sleep 100
echo loop
echo wscript.sleep (int(Sound.currentmedia.duration^)+1^)*1000
)>sound.vbs
start /min sound.vbs
exit /b
编辑: 第二个脚本应该可以尝试一下;)
@echo off
set "file=GameMusic.mp3"
( echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%file%"
echo Sound.settings.volume = 100
echo Sound.settings.setMode "loop", True
echo Sound.Controls.play
echo While Sound.playState ^<^> 1
echo WScript.Sleep 100
echo Wend
)>sound.vbs
start /min sound.vbs
exit /b
答案 2 :(得分:1)
从Office中使用对象浏览器(Alt + F11,F2,Alt + T,R,添加Windows Media Player(使用wmp.dll)。
Sub setMode(bstrMode As String, varfMode As Boolean)
Member of WMPLib.IWMPSettings
Sets the mode of the playlist
来自帮助https://msdn.microsoft.com/en-us/library/windows/desktop/dd564867(v=vs.85).aspx
autoRewind
曲目在播放结束后从头开始重启。
loop
曲目序列重复。
showFrame
不播放时显示最近的关键帧。此模式与音轨无关。
shuffle
曲目以随机顺序播放。
varfMode
[in]
一个System.Boolean值,指定新指定的模式是否处于活动状态。
所以Sound.SetMode "Loop", True
Set oPlayer = CreateObject("WMPlayer.OCX")
oPlayer.URL = "C:\Windows\Media\chimes.wav"
oPlayer.settings.volume = 100
oPlayer.settings.setMode "loop", True
oPlayer.controls.play
wscript.sleep 10000
答案 3 :(得分:0)
您可以通过将我发布给您的代码写入功能来优化您的代码,并将其称为您想要的! 这是一个例子:
@echo off
echo We play "Intro_DJ.mp3" with a volume of 20
Call:PlayMusic http://hackoo.alwaysdata.net/Intro_DJ.mp3 20
echo(
echo Hit any key to stop the music and play another file
pause>nul
Call:StopMusic
Call:PlayMusic http://hackoo.alwaysdata.net/Matrix.mp3 100
echo(
echo We play "Matrix.mp3" with a volume of 100
echo(
echo Hit any key to stop the music in loop
pause>nul
Call:StopMusic
Exit /b
::************************************************************
:PlayMusic <Media_URL> <Volume>
(
echo Set Sound = CreateObject("WMPlayer.OCX.7"^)
echo Sound.URL = "%1"
echo Sound.settings.volume = %2
echo Sound.settings.setMode "loop", True
echo Sound.Controls.play
echo While Sound.playState ^<^> 1
echo WScript.Sleep 100
echo Wend
)>%~n0.vbs
start "" "%~n0.vbs" %1 %2
Exit /b
::************************************************************
:StopMusic
Taskkill /IM "wscript.exe" /F>nul 2>&1
Exit /b
::************************************************************
答案 4 :(得分:0)
这是我的控制台播放器集合,仅依赖于windows内置对象。
1)MediaRunner.bat - 它使用Windows媒体播放器对象。要完成它检查其状态 - 当播放器状态为1
播放完成时。用法:
MediaRunner.bat someSound.wav
2)SpPlayer.bat它使用sp.voice对象。尽管它非常轻量级,但它只能播放.wav
个文件。用法是相同的。
3)SoundPlayer.bat - 它使用internetexplorer.application对象及其bgsound
标签(并且不需要安装媒体播放器)。它预先计算文件的长度以决定何时退出。也接受音乐音量作为可选参数:
SoundPlayer.bat someFile.mp3 500