【问题标题】:How to stop script as soon as active window is no longer the desired window一旦活动窗口不再是所需的窗口,如何停止脚本
【发布时间】:2019-04-25 18:03:29
【问题描述】:

我正在为特定窗口中的一些预先确定的点击和发送编写脚本。
有时点击不会在所需位置结束,它可能会点击不同的窗口,现在我脚本的所有后续输入都将发送到错误的窗口/位置。

这是代码的执行部分,我似乎无法做到 100% 一致。

    CoordMode, Mouse, Window
    SetTitleMatchMode, 2

    <!p::
    Click, 60, 270
    Send, %dp%{Tab}{Tab}{Tab}{Tab}%e1%{Tab}^a           ; Plate thickness and layout
    Send, %PLh%                                         ; Plate Height
    Click, 60, 130
    Sleep 100
    Click, 263, 45
    Sleep 20
    Click, 263, 45
    Sleep 20
    Click, 370, 48
    Sleep 100
    Click, %Mx%, %My%                                   ; Bolt Diameters (M16: 40, 135) (M20: 40, 150) (M24: 40, 170) (M27: 40, 190) (M30: 40, 210)
    Sleep 50
    Click, 60, 160
    Send, {Tab}{Tab}{Tab}%w1%{Tab}{Tab}^a               ; Hor Bolt center distance
    Sleep 50
    Send, 0{Tab}^a                                      ; Edge distance
    Send, 0                                             ; Edge distance
    Sleep 100
    Click, 60, 190
    Sleep 100
    Send, {Tab}{Tab}%e3%                                ; Vert interm distance
    Send, {Tab}{Tab}{Tab}{Tab}{Tab}%e2%                 ; vert outside bolt dist
    Click, 60, 295
    Sleep 100
    Send, {Tab}%Stiff%{Tab}{Tab}{Tab}%Stiff%            ; Stiffener thickness
    Sleep 100
    Click, 60, 320
    Sleep 100
    Send, %Weld%{Tab}{Tab}{Tab}%Weld%{Tab}{Tab}%Weld%{Tab}{Tab}%Weld%{Tab}{Tab}%Weld%               ; Weld thickness
    Return

如果这部分代码中的任何点击导致激活不需要的窗口,那么我希望我的脚本停止并发出警告。
我可以为每次点击插入一个 If Winactive 语句,但这对我来说感觉很不雅,也许有更好的解决方案?

(我也可以问如何使这个脚本更加一致,我已经尝试通过插入睡眠命令来做到这一点,但这是一个不同的问题。罪魁祸首似乎是单击下拉框,但很难确定,因为我无法通过逐行运行来调试 AHK 代码)

提前致谢

【问题讨论】:

标签: autohotkey


【解决方案1】:

Yane 非常友好地向我指出了“Controlsend”和“Controlclick”的方向,这涵盖了我遇到的问题。

而不是使用,例如:

Click, 60, 300  

可以像这样在特定窗口中强制点击:

ControlClick, x60 y300, MyDesiredWindow'sTitle

此外,要修复我的单击保管箱的特定情况,会抛出脚本的其余部分,可以使用以下内容:

ControlClick, ComboBox1, MyDesiredWindow'sTitle

这将单击特定窗口中的特定控件。 (使用Window Spy识别窗口和控件)

我想在正确使用 ControlSend 和其他 AHK 命令和实践时,我的问题在很大程度上是无关紧要的。

在我看来,可以直接回答标题中的问题,虽然我的回答并没有真正做到这一点,但我会在可能的情况下接受我自己的回答,因为它确实解决了我的问题问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2014-12-08
    • 2016-11-08
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多