如何在没有 window 处于活动状态时创建上下文相关的热键?
How to create context-sensitive hotkeys when no window is active?
我想在没有 window 处于活动状态时创建一些热键:
但是没有#IfNoWinActive
这样的语句,如何实现呢?
总有一个活动的 window(将获得输入的那个)。
例如Win+X 菜单没有标题,但有一个隐藏的 ahk_class (LauncherTipWnd)。要检测它,您必须在脚本中添加 DetectHiddenWindows, On
:
#NoEnv
#SingleInstance Force
DetectHiddenWindows, On
#IfWinActive ahk_class LauncherTipWnd ; Win+X Menu
F1:: Run notepad
F2:: Send m ; starts the Device Manager
#IfWinActive
编辑:
要获取(隐藏)活动 window 的标题和 ahk_class,运行 此脚本并在 window 活动后立即按 F1:
#NoEnv
#SingleInstance Force
DetectHiddenWindows, On
F1::
WinGetTitle, ActiveTitle, A
WinGetClass, ActiveClass, A
MsgBox, ActiveTitle: %ActiveTitle%`nActiveClass: ahk_class %ActiveClass%
return
F2::
WinSetTitle, A, , NewTitle
WinGetTitle, ActiveTitle, A
MsgBox, ActiveTitle: %ActiveTitle%
return
F3::
WinGet, ActiveExe, ProcessName, A
MsgBox, ProcessName: "%ActiveExe%"
return
按Ctrl+C复制MsgBox的内容。
EDIT2:
如果活动 window 没有标题也没有 ahk_class 你可以试试这个:
F1::
WinGetTitle, ActiveTitle, A
WinGetClass, ActiveClass, A
If (ActiveTitle = "" && ActiveClass = "")
Run notepad
; else If WinActive("WinTitle ahk_class WinClass", "WinText", "ExcludeTitlePart")
; do this
else
Send {F1}
Return
~Esc::
WinGet A, PID, A
if !A {
MsgBox ; put logic here
}
return
我想在没有 window 处于活动状态时创建一些热键:
但是没有#IfNoWinActive
这样的语句,如何实现呢?
总有一个活动的 window(将获得输入的那个)。
例如Win+X 菜单没有标题,但有一个隐藏的 ahk_class (LauncherTipWnd)。要检测它,您必须在脚本中添加 DetectHiddenWindows, On
:
#NoEnv
#SingleInstance Force
DetectHiddenWindows, On
#IfWinActive ahk_class LauncherTipWnd ; Win+X Menu
F1:: Run notepad
F2:: Send m ; starts the Device Manager
#IfWinActive
编辑:
要获取(隐藏)活动 window 的标题和 ahk_class,运行 此脚本并在 window 活动后立即按 F1:
#NoEnv
#SingleInstance Force
DetectHiddenWindows, On
F1::
WinGetTitle, ActiveTitle, A
WinGetClass, ActiveClass, A
MsgBox, ActiveTitle: %ActiveTitle%`nActiveClass: ahk_class %ActiveClass%
return
F2::
WinSetTitle, A, , NewTitle
WinGetTitle, ActiveTitle, A
MsgBox, ActiveTitle: %ActiveTitle%
return
F3::
WinGet, ActiveExe, ProcessName, A
MsgBox, ProcessName: "%ActiveExe%"
return
按Ctrl+C复制MsgBox的内容。
EDIT2:
如果活动 window 没有标题也没有 ahk_class 你可以试试这个:
F1::
WinGetTitle, ActiveTitle, A
WinGetClass, ActiveClass, A
If (ActiveTitle = "" && ActiveClass = "")
Run notepad
; else If WinActive("WinTitle ahk_class WinClass", "WinText", "ExcludeTitlePart")
; do this
else
Send {F1}
Return
~Esc::
WinGet A, PID, A
if !A {
MsgBox ; put logic here
}
return