Autohotkey:关闭 vlc 媒体播放器

Autohotkey:关闭 vlc 媒体播放器

我想设置一个热键来使用 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 ^QSend !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

问题在于引号,也许还在于 TitleMatchMode。

这将起作用:

SetTitleMatchMode, 2
#+:: Winclose, VLC

参考:

答案3

它们似乎都不起作用。

可能存在多个问题:

  • 窗口标题周围不应有引号。

  • 在您的示例中,您可能想要使用例如WinClose, VLC media playerVLC 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-最后找到的窗口

相关内容