Autohotkey 如何在活动窗口不再是所需窗口时立即停止脚本
我正在编写一些预先确定的点击脚本,并在特定窗口发送。Autohotkey 如何在活动窗口不再是所需窗口时立即停止脚本,autohotkey,Autohotkey,我正在编写一些预先确定的点击脚本,并在特定窗口发送。 有时单击不会在所需的位置结束,它可能会单击不同的窗口,现在来自脚本的所有后续输入都将发送到错误的窗口/位置 下面是代码的执行部分,我似乎无法使其100%一致 CoordMode, Mouse, Window SetTitleMatchMode, 2 <!p:: Click, 60, 270 Send, %dp%{Tab}{Tab}{Tab}{Tab}%e1%{Tab}^a ;
有时单击不会在所需的位置结束,它可能会单击不同的窗口,现在来自脚本的所有后续输入都将发送到错误的窗口/位置 下面是代码的执行部分,我似乎无法使其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
协调模式、鼠标、窗口
SetTitleMatchMode,2
如果此部分代码中的任何单击导致激活不需要的窗口,则我希望脚本停止并发出警告。我可以为每次单击插入一个If-Winactive语句,但我觉得这很不雅观,也许有更好的解决方案 (我也可以问如何使这个脚本更加一致,我已经尝试通过插入Sleep命令来做到这一点,但这是另一个问题。罪魁祸首似乎是单击下拉框,但很难确定,因为我无法通过逐行运行来调试AHK代码)
提前感谢我非常友好,Yane向我指出了“Controlsend”和“Controlclick”的方向,这涵盖了我遇到的问题 而不是使用,例如:
Click, 60, 300
可以在特定窗口中强制单击,如下所示:
ControlClick, x60 y300, MyDesiredWindow'sTitle
此外,要修复我的特定情况,即单击dropbox会导致脚本的其余部分丢失,可以使用以下方法:
ControlClick, ComboBox1, MyDesiredWindow'sTitle
这将单击特定窗口中的特定控件。(使用Window Spy识别窗口和控件)
我想当正确使用ControlSend和其他AHK命令和实践时,我的问题在很大程度上是无关紧要的
在我看来,直接回答标题中的问题是可能的,尽管我的答案并没有做到这一点,但当我有可能这样做时,我会接受我自己的答案,因为它确实解决了我的问题。你应该研究一下“好的,我会的”,谢谢。