Wenfang Du Asked: 2021-08-22 19:13:34 +0800 CST2021-08-22 19:13:34 +0800 CST 2021-08-22 19:13:34 +0800 CST 如果没有打开对话框,如何绑定动作? 772 在 VLC 媒体播放器中,如果没有打开对话框(例如首选项对话框),我想绑定k到Space(暂停/播放),如何实现? keyboard-shortcuts vlc-media-player 1 个回答 Voted Best Answer JJohnston2 2021-08-22T21:37:22+08:002021-08-22T21:37:22+08:00 VLC 很烦人,因为对话框没有不同的窗口类。这意味着最简单的方法可能是将 WinTitle 的窗口标题部分用于#IfWinActive. 您还可以根据窗口大小本身添加其他标准,但这更烦人。 使用 AutoHotkey 托盘图标中的 Window Spy 会产生: VLC media player ahk_class Qt5QWindowIcon ahk_exe vlc.exe ...或者... Simple Preferences ahk_class Qt5QWindowIcon ahk_exe vlc.exe 因此,在这种情况下,您通常有两种选择,在某些情况下,一种会比另一种更容易,具体取决于您要执行的操作: 在主窗口的标题上触发 [松散] 触发可执行文件并为您不想触发的对话框添加否定排除条件 所以几个连续的例子: ; this won't work as soon as you play a song and the title changes #IfWinActive, VLC media player k::Send {Space} 下一步...这应该主要工作,但有时您将使用与 VLC 不同的程序,其中窗口标题完全改变,在这种情况下,您可能需要仅使用 exe... SetTitleMatchMode, 2 ; make title match generic #IfWinActive, VLC media player ahk_exe vlc.exe k::Send {Space} 接下来...这太开放了,但根本不依赖于窗口标题... #IfWinActive, ahk_exe vlc.exe k::Send {Space} 因此,您可以在上面显示的案例基础上构建并在几乎属于给定 exe 的任何窗口上触发,但排除某些对话框...... #If WinActive("ahk_exe vlc.exe") && !WinActive("Simple Preferences") && !WinActive("whatever... keep adding conditions as needed") k::Send {Space} 请注意,对于使用多个条件的最后一种情况,我们切换到 using#If而不是#IfWinActive,并且#IfWinNotActive如果您想将热键编写为通常是全局的,也可以使用,但有一些例外 更好/更简单的情况是对于没有所有相同窗口类的程序,在这种情况下,对话框通常有自己的窗口类,并且可以被 WinTitle 的类部分包含或排除,而不是只有标题和exe 帮助区分您想要包含或排除的内容。
VLC 很烦人,因为对话框没有不同的窗口类。这意味着最简单的方法可能是将 WinTitle 的窗口标题部分用于
#IfWinActive
. 您还可以根据窗口大小本身添加其他标准,但这更烦人。使用 AutoHotkey 托盘图标中的 Window Spy 会产生:
...或者...
因此,在这种情况下,您通常有两种选择,在某些情况下,一种会比另一种更容易,具体取决于您要执行的操作:
所以几个连续的例子:
下一步...这应该主要工作,但有时您将使用与 VLC 不同的程序,其中窗口标题完全改变,在这种情况下,您可能需要仅使用 exe...
接下来...这太开放了,但根本不依赖于窗口标题...
因此,您可以在上面显示的案例基础上构建并在几乎属于给定 exe 的任何窗口上触发,但排除某些对话框......
请注意,对于使用多个条件的最后一种情况,我们切换到 using
#If
而不是#IfWinActive
,并且#IfWinNotActive
如果您想将热键编写为通常是全局的,也可以使用,但有一些例外更好/更简单的情况是对于没有所有相同窗口类的程序,在这种情况下,对话框通常有自己的窗口类,并且可以被 WinTitle 的类部分包含或排除,而不是只有标题和exe 帮助区分您想要包含或排除的内容。