; 窗口最大化或最小化时钩子调用 wParam=5 有时会失效,原因未知
Global 后台WinTitle:="ahk_class HH Parent"
DllCall("RegisterShellHookWindow", "Ptr", A_ScriptHwnd)
OnMessage(DllCall("RegisterWindowMessage", "Str", "ShellHook"), "ShellEvent")
;活动窗口切换监控【异步触发】
/* wParam参数:
;1 顶级窗体被创建 ;2 顶级窗体即将被关闭 ;54 退出全屏 ;32772 窗口切换
;3 SHELL 的主窗体将被激活 ;4 顶级窗体被激活 ;&H8000& 掩码 ;53 全屏
;5 顶级窗体被最大化或最小化 ;6 Windows 任务栏被刷新,也可以理解成标题变更
;7 任务列表的内容被选中 ;8 中英文切换或输入法切换 ;13 wParam=被替换的顶级窗口的hWnd
;9 显示系统菜单 ;10 顶级窗体被强制关闭 ;14 wParam=替换顶级窗口的窗口hWnd
;12 没有被程序处理的APPCOMMAND。见WM_APPCOMMAND
*/
; 目标窗口激活再最小化后,窗口会移动到主监视器左上角【用于还原移出屏幕的窗口】
ShellEvent(wParam, lParam) {
Static 后台窗口正激活
; 还原最小化的目标窗口
PostMessage, 0x0112, 0xF120,,, %后台WinTitle%
; wParam=5 有时会失效,原因未知
if (wParam=5) && (后台窗口正激活=1)
WinMove, %后台WinTitle%,, 0, 0
后台窗口正激活 := WinActive(后台WinTitle) ? 1 : 0
}
F1::
if onoff := !onoff
WinMove, %后台WinTitle%,, 2220, 0
else
WinMove, %后台WinTitle%,, 222, 0
Return
暂无讨论,说说你的看法吧