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