但是像有道词典和listary这种小窗口IfWinActive就不起作用了,该用什么办法监控这类型的窗口?
Code: Select all
GroupAdd,cn,ahk_exe QQ.exe ;QQ
GroupAdd,cn,ahk_exe WINWORD.EXE ;word
GroupAdd,cn,ahk_exe MindManager.exe
GroupAdd,en,ahk_exe dopus.exe
GroupAdd,en,ahk_class Notepad++
GroupAdd,en,ahk_exe sublime_text.exe
setChineseLayout(){
;发送中文输入法切换快捷键,请根据实际情况设置。
send {Ctrl Down}{Alt Down}{0}
send {Ctrl Up}{Alt Up}
}
setEnglishLayout(){
;发送英文输入法切换快捷键,请根据实际情况设置。
send {Ctrl Down}{Alt Down}{9}
send {Ctrl Up}{Alt Up}
}
;监控消息回调ShellMessage,并自动设置输入法
Gui +LastFound
hWnd := WinExist()
DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage")
ShellMessage( wParam,lParam ) {
If ( wParam = 1 )
{
WinGetclass, WinClass, ahk_id %lParam%
;MsgBox,%Winclass%
Sleep, 1000
WinActivate,ahk_class %Winclass%
;WinGetActiveTitle, Title
;MsgBox, The active window is "%Title%".
IfWinActive,ahk_group cn
{
setChineseLayout()
TrayTip,AHK, 已自动切换到中文输入法
return
}
IfWinActive,ahk_group en
{
setEnglishLayout()
TrayTip,AHK, 已自动切换到英文输入法
return
}
}
}