1

我们的销售点系统中出现了一个恼人的弹出窗口,它始终具有相同的窗口标题和窗口消息。我想创建一个脚本,不断监视此窗口是否弹出,并在弹出时立即按 Enter。

我意识到我可以使用一个循环,每 500 毫秒运行一次窗口检查,然后在窗口存在时执行脚本,但我认为必须有某种方式让 AHK 可以连续监控而不会处于短时循环中。任何过去的经验都非常感谢!谢谢!

PS 我查看了#persistent 标签,但我认为这并不能真正满足我的要求。

附加说明:我继续自己的研究并找到了 WinWait,但是当弹出框出现时它不起作用!你能告诉我我做错了什么吗?这是我添加到 AHK 文件中的脚本:

WinWaitActive, Message, Number of Kits,0
{
    Send {Enter}
}
Return

这是来自 Windows Inspector 的捕获:

>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
Message
ahk_class TMessForm

>>>>>>>>>>>>( Mouse Position )<<<<<<<<<<<<<
On Screen:  1219, 438  (less often used)
In Active Window:   765, 7

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<

Color:  0xF7F3F7  (Blue=F7 Green=F3 Red=F7)

>>>>>>>>>>( Active Window Position )<<<<<<<<<<
left: 454     top: 431     width: 491     height: 148

>>>>>>>>>>>( Status Bar Text )<<<<<<<<<<

>>>>>>>>>>>( Visible Window Text )<<<<<<<<<<<
&Ok
1
Number of Kits

>>>>>>>>>>>( Hidden Window Text )<<<<<<<<<<<

>>>>( TitleMatchMode=slow Visible Text )<<<<

>>>>( TitleMatchMode=slow Hidden Text )<<<<
4

2 回答 2

1

多年来,我一直在用一个每秒执行一次的计时器来对抗几个弹出窗口。如果它不能立即工作,您只需更改 IfWinExist 以匹配您的窗口。

SetTimer, CheckWin, 1000
return


CheckWin:
SetTitleMatchMode, 2
IfWinExist, ahk_class TMessForm, Number of Kits
{
   WinClose 

   ; alternatively, write code to activate window
   ; then send Enter as in your example

   TrayTip, Popup-Killer,Window killed,3, 17
   return
}
return

顺便说一句,我真的很喜欢评论中的 MCL 的 Shell Hook 想法......

于 2013-07-30T07:06:12.577 回答
0

这个怎么样?:

F12:: 
  WINDOWEXPLORER: 
    WinWaitActive, Windows Explorer,, 0.01 
    if ErrorLevel { 
      Goto WINDOWEXPLORER 
    } else { 
      ; SoundBeep 4500, 30
      Return 
    }
于 2015-09-04T19:59:43.020 回答