如何在活动窗口不再是所需窗口时立即停止脚本

时间:2019-04-25 07:50:47

标签: autohotkey

我正在为特定窗口中的一些预定的点击和发送编写脚本。
有时,单击不会最终在所需的位置,而是可能单击另一个窗口,现在,脚本中的所有后续输入都将发送到错误的窗口/位置。

这是代码的执行部分,我似乎无法保证其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语句,但是这对我来说很不雅致,也许有更好的解决方案?

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

预先感谢

1 个答案:

答案 0 :(得分:1)

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

例如,代替使用:

/dashboard

一个人可以像这样在特定窗口中强制单击:

Click, 60, 300  

此外,要解决我的单击下拉框扔掉脚本其余部分的特定情况,可以使用以下命令:

ControlClick, x60 y300, MyDesiredWindow'sTitle

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

我猜想我的问题在正确使用ControlSend和其他AHK命令和实践时基本上无关紧要。

在我看来,可以直接在标题中回答问题,尽管我的回答并没有真正做到,但我可能会接受我自己的回答,因为它确实解决了我的问题。问题。

相关问题