【问题标题】:traytip when window becomes active?窗口变为活动状态时的托盘提示?
【发布时间】:2013-12-12 16:14:31
【问题描述】:

我只想在窗口变为活动状态时显示工具提示。

为什么这不起作用?它会在脚本加载后立即启动工具提示。

#IfWinActive, Untitled - Notepad
{
TrayTip, Notepad Has Focus, test
Tab::
    MsgBox Window Found
    return
}

选项卡检测按预期工作,它仅在窗口处于活动状态时显示消息框。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    根据#If... docs#IfWinActive创建上下文相关的热键和热字符串。更准确地说,当您使用 #IfWin...:
    时会发生这种情况 每当您按下热键或键入热字串时,AHK 都会查找相应的 #IfWin... 定义(如果可用)并对其进行评估(例如 “记事本是否处于活动状态?”)。如果为真,则执行热键/热字符串标签,否则将发送本机键。
    看看这个过程,你会发现在#IfWin... 语句下面执行任意代码是行不通的;当指定的窗口变为活动/存在等时,AHK 不会触发事件,而是在触发相应的热键/热字符串时检查条件。
    因此,您将不得不编写等待记事本、显示通知并可能重复此过程的代码:

    #Persistent
    
    SetTimer, WaitForNotepad, -1
    
    Exit
    
    WaitForNotepad:
        WinWaitActive, ahk_class Notepad
        TrayTip, Warning, Notepad is active!
        WinWaitNotActive
        SetTimer, WaitForNotepad, -1
    return
    

    请注意,在某种循环中,如果没有SetTimer,这也可以工作。但是,当您等待可能很长时间时,使用计时器是合理的,因为它们实际上允许其他线程在其间运行。
    您还注意到我使用了 window 类 (ahk_class) 而不是窗口标题,因为它通常更可靠。

    【讨论】:

      猜你喜欢
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多