如何在没有 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