我想设置一个热键来使用 autohotkey 关闭 vlc 或 windows media player。我在指南中看到了这个页面- https://www.autohotkey.com/docs/commands/WinClose.htm
但它似乎不起作用,这是我尝试过的:-
#+:: Winclose ,"VLC Media player"
#+:: Winclose ,"VLC Media player 2.0.1"
#+:: Winclose ,"vlc"
它们似乎都不起作用。这是因为 vlc 中没有播放任何内容。我如何设置热键以在 vlc 中运行任何内容时将其关闭?或者 Windows Media Player?
注意:我知道我们可以Send ^Q
,Send !F4
但是这仅在 vlc 窗口处于活动状态时才有效,但我希望能够在 VLC 在后台播放音乐时结束它。
答案1
您需要将两件事结合起来……
首先是正确的标题匹配,这在其他答案中已经详细说明(有几个细微差别需要注意)。请注意,某些事情可能不会一直按预期工作,例如此代码似乎并不总是有效...
#Persistent
F4::
if WinExist("ahk_exe vlc.exe")
WinClose
Return
上述代码返回了一个有效的 ID,WinExist()
但尝试通过关闭它WinClose
在某些情况下可能不起作用(可能是因为 VLC 处理WM_CLOSE
窗口消息的方式)
手上的这个代码可能更通用......
#Persistent
SetTitleMatchMode, 2
F4::WinClose, VLC
其次,除了正确的标题匹配之外,您还需要实际的热键定义。
我不知道您希望使用什么热键,但是#+::
有两个修饰键(Windows 键和 Shift 键),没有定义实际的热键。
如果您不确定热键定义是否正常工作,只需输入一个MsgBox
语句并查看是否正确触发......
例如:
#+::MsgBox ; This doesn't do anything
F4::MsgBox ; This works when pressing F4
然后,一旦您的热键定义起作用,您就可以弄清楚其余的代码。
另外,如果您要进行多行测试,例如将 MsgBox 和代码放在一个块中,请从代码热键定义后的下一行开始,并确保使用语句Return
关闭热键定义...
#Persistent
SetTitleMatchMode, 2
F4::
MsgBox % "Hotkey Triggered: " A_ThisHotkey "`n`n" . "About to close VLC..."
WinClose, VLC
Return
答案2
答案3
它们似乎都不起作用。
可能存在多个问题:
窗口标题周围不应有引号。
在您的示例中,您可能想要使用例如
WinClose, VLC media player
,VLC media player
其中精确的未加载文件的窗口标题。播放媒体时,窗口标题会发生变化。例如,
Awesome Song.ext - VLC media player
播放名为 的文件时,标题会变成Awesome Song.ext
。从技术上讲,可以使用 来解决这个SetTitleMatchMode, 2
问题,这样可以实现部分标题匹配(如该问题的另一个当前答案中所述)。在测试中,我无法将
#!
其用作热键组合。因此我建议选择其他键或组合(我假设这应该是 Win+ Shift?)。
我希望能够在 VLC 在后台播放音乐时结束它。
如果您想要一种简单的方法来在 VLC 加载文件(或正在播放)时终止它,我建议您尝试例如:
F4::
if WinExist("ahk_exe vlc.exe")
WinClose
我的理解是,省略参数将WinClose
使用最后找到的窗口,例如if WinExist()
。请参阅文档WinTitle-最后找到的窗口。