Autohotkey窗口出现事件

Rom*_*iev 7 autohotkey

我正在使用WorkRave休息提醒,并希望在其余窗口出现时关闭我的屏幕.我知道怎么把它关掉.

如何在指定窗口(#IfWinActive ahk_class ...)出现时创建事件?

另外,我可以绑定%符号吗?{%}不起作用,而不是其他的.

inf*_*lch 11

要显示窗口的即时通知,请使用Shell Hook.这有时是如此之快,以至于autohotkey可以在您自己甚至看到窗口之前做出反应.

AutoHotkey论坛上演示了一个shell挂钩.

您的使用示例(几乎从论坛帖子逐字复制):

#Persistent
SetBatchLines, -1
Process, Priority,, High

Gui +LastFound
hWnd := WinExist()

DllCall( "RegisterShellHookWindow", UInt,hWnd )
MsgNum := DllCall( "RegisterWindowMessage", Str,"SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" )
Return

ShellMessage( wParam,lParam )
{
    If ( wParam = 1 ) ;  HSHELL_WINDOWCREATED := 1
    {
        WinGetTitle, Title, ahk_id %lParam%
        If  ( Title = "WorkRest" )
            WinClose, ahk_id %lParam% ; close it immideately
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你想在命令中使用文字%符号,请使用AutoHotkey的转义字符,反引号`(与美国键盘上的〜相同的键)将其转义,如下所示:

MsgBox You are 200`% awesome!
Run Code Online (Sandbox Code Playgroud)