Autohotkey 如何仅在特定窗口处于活动状态时激活脚本?

Autohotkey 如何仅在特定窗口处于活动状态时激活脚本?,autohotkey,Autohotkey,我有一个脚本问题,它应该只执行以下操作: -如果某个特定窗口处于活动状态 -SetCapslockState,打开 -如果窗口失去焦点 -SetCapslockState,关闭 我试过: #If WinActive("ahk_class blahblah") SetCapslockState, On WinWaitActive, (mytitleofwindow) if ErrorLevel { SetCapslockState, On return } else 和/或 #If !Wi

我有一个脚本问题,它应该只执行以下操作: -如果某个特定窗口处于活动状态 -SetCapslockState,打开 -如果窗口失去焦点 -SetCapslockState,关闭

我试过:

#If WinActive("ahk_class blahblah")

SetCapslockState, On
WinWaitActive, (mytitleofwindow)
if ErrorLevel
{
SetCapslockState, On

return
}
else
和/或

#If !WinActive("ahk_class Chrome_WidgetWin_1")

SetCapslockState, Off
但它不起作用

我也试过:

#If WinActive("ahk_class blahblah")

SetCapslockState, On
WinWaitActive, (mytitleofwindow)
if ErrorLevel
{
SetCapslockState, On

return
}
else
它也不起作用,否则我不会在这里寻求帮助。。。嗨嗨

我希望有人能帮助我!:)

关键是要与

您还可以使用硬件句柄,而不是循环(占用CPU周期)。见示例:

#SingleInstance Force
#installKeybdHook
#Persistent
Menu, Tray, Tip, Medical Alert
SetKeyDelay, 50
Menu, Tray, Icon , Shell32.dll, 145, 1
TrayTip, Medical Alert, Started, 1

Gui +LastFound 
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,Hwnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam ) ; Run on Window switch
{
    If (wParam = 4) ; If Window Changed
    {        
        WinGetActiveTitle, Title
        if instr(Title, "Past Medical History") OR instr(Title, "Allergies Verified") ; TESTED WITH: if instr(Title, "NotePad")
            MsgBox, 1, Allergies Verified, Please verify patient allergies
    }
}
Return

依我看,您的解决方案是首选方法<如果要寻找更精细的控件,则可以使用code>SetWinEventHook替代
RegisterShellHookWindow