【问题标题】:AutoHotKey: catching & manipulating windows without human interactionAutoHotKey:无需人工交互即可捕获和操作窗口
【发布时间】:2017-11-09 21:08:32
【问题描述】:

一些听起来很基本的东西花了很多时间:AutoHotKey 脚本如何编程为等待特定窗口然后接受它,Send {enter},关闭它?在这种情况下,每次打开某个程序的某些文件类型时,都会出现一个烦人的设置确认对话框。一个小问题是窗口标题每次都会改变,而它的ahn_class 与母程序共享——我试图通过按像素大小捕获窗口来解决这些问题:

#IfWinActive ahk_class SALFRAME
    ~LButton::
    WinGetActiveStats, , width, , ,
    if (width = "681") {
        Send {enter}
    }
return

这可行,但是当它出现时强制点击对话上的某个地方,这比以前更快,但仍然没有真正自动化。我还尝试使用WinWaitActive 等,但它似乎没有捕捉到窗口(在某些时候,我尝试编写的一些脚本实际上在脚本执行时杀死了窗口,但只有一次,没有触摸脚本首次运行后出现的后续窗口)。在没有人工输入的情况下使用 AutoHotKey 等待和终止某些窗口的正确方法是什么?

【问题讨论】:

  • WinWaitActive 是最好的方法。您只会找到一个 WinWaitActive 接受的属性窗口,并且对于所有此类窗口都保持相同。

标签: automation window autohotkey


【解决方案1】:
#Persistent
SetTimer, Send_Enter_to_specific_window, 50
return

    Send_Enter_to_specific_window:
IfWinActive ahk_class SALFRAME
{
    WinGetPos,,, width,, A
    if (width = "681")
         Send {enter}
}
return

https://autohotkey.com/docs/commands/SetTimer.htm#Examples

【讨论】:

  • 请注意Send_Enter_to_specific_window 中的最后一个_。谢谢! Period 是 50 毫秒是什么意思?
  • 已更正,谢谢!该脚本每 50 毫秒检查一次特定窗口是否存在并处于活动状态。
  • 对,如果省略,默认为250毫秒。
猜你喜欢
  • 2021-03-21
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
相关资源
最近更新 更多