有谁成功让 Autohotkey 与 VLC 协同工作过吗?
^numpad6::
DetectHiddenWindows , On
ControlSend , ahk_parent, !{right}, VLC Media Player
DetectHiddenWindows , Off
return
^numpad4::
DetectHiddenWindows , On
ControlSend , ahk_parent, !{left}, VLC Media Player ahk_class QWidget
DetectHiddenWindows , Off
return
^#space::
DetectHiddenWindows , On
ControlSend , ahk_parent, {space}, ahk_class QWidget
DetectHiddenWindows , Off
return
使用了这些(每个方法不同),但不起作用。顺便说一下,这些脚本适用于 iTunes。
答案1
尝试使用 VLC HTTP 接口库,我希望它可以帮助您...这是 VLC 媒体播放器的 http 接口命令库。
以下是使用 VLCHTTP 和 VLC 媒体播放器的一些优点:
VLC 不需要作为活动窗口来使用 HTTP 功能,因此不会干扰其他窗口。
HTTP 功能可以在互联网、本地网络或一台计算机上使用。
VLC 可以在任何显示器上全屏播放,而不仅仅是默认显示器。
VLC 将在点击媒体链接的显示器上全屏打开。
VLC 在失去焦点时不会退出全屏。在一台显示器上播放电影,在另一台显示器上工作。
例子:
Gui, Add, Button, gButton1, Play/Pause
Gui, Add, Button, gButton2, Volume Up
Gui, Show
Return
Button1:
VLCHTTP_Pause() ; Use pause instead of play to toggle play/pause mode.
Return
Button2:
VLCHTTP_VolumeUp(1) ; Turns the volume up 1 step.
Return
更多信息请访问此链接。
答案2
您的 ControlSend 命令可能应该有不同的参数(请阅读帮助文件以获取更多信息)。这在我的 PC(Win7 32)上有效:
^#Space::
SetTitleMatchMode, 2
ControlSend, , {space}, VLC media player
Return
事实证明,您不需要任何控件 ID:VLC 将接受任何控件(或至少最顶层控件)中的空格。我认为,您的代码的问题在于,您同时使用了窗口类和标题中的文本来标识窗口:您应该只使用其中一个,而不是两者。
我总是将标题匹配模式设置为 2(=单词可以出现在标题中的任何位置),因为这样可以捕获大多数标题并且更直观地工作(我懒得测试它是否适用于不同的匹配模式)。
答案3
您也可以使用 IfWinExist 来执行此操作,这样您只需指定一次 VLC 父名称。这是我使用的代码。
#IfWinExist ahk_class QWidget
Media_Next::
ControlSend, ahk_parent, n ; Next
return
Media_Prev::
ControlSend, ahk_parent, p ; Previous
return
Media_Play_Pause::
ControlSend, ahk_parent, {Space} ; Play/Pause
return
Media_Stop::
ControlSend, ahk_parent, s ; Stop
return
#IfWinExist