所以我一直在尝试让 VLC 播放器在特定时间(上午 10 点)跳到下一个文件。我有以下脚本,它运行了几天,然后完全停止了。
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "VLC Media Player" WScript.sleep(200) WshShell.SendKeys "n"
VBS 文件本身运行良好,但是任务调度程序在运行时似乎不会跳过该文件(vlc 窗口有时会闪烁)。
我尝试过忽略登录、将用户更改为系统并设置为在任何网络连接下运行,以及使用 .bat 文件运行 .vbs 脚本。到目前为止,没有任何效果,我感觉自己快要疯了,任何帮助都将不胜感激。我对脚本几乎一无所知,因此如果可能的话,我希望得到解释。
答案1
调用时使用应用程序标题AppActivate
通常会产生不良结果。例如,如果您在 Chromium 浏览器中查看此 SuperUser 文章,AppActivate
可能会错误地选择并激活它,因为浏览器选项卡标题以以下内容开头:VLC媒体播放器。为了避免这种混淆,通常最好获取并使用正在运行的应用程序的进程 ID,而不是其标题。
例如:
Dim PID : PID = 0
With GetObject("winmgmts:\\.\root\CIMV2")
For Each oProc in .ExecQuery("SELECT ProcessID FROM Win32_Process WHERE Name='vlc.exe'", "WQL", 48)
PID = oProc.ProcessID
Exit For
Next
End With
If 0 <> PID Then
With CreateObject("WScript.Shell")
.AppActivate PID
.SendKeys "n"
End With
End If
这里我们调用 WMI 来获取Win32_Process
正在运行的类进程管理器AppActivate
进程——具体来说,是其进程 ID。如果成功,则在调用 之前使用该进程 ID SendKeys
。
希望这可以帮助。