问题
I wrote such autohotkey script to auto-logon my program:
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Run info.exe
WinWait, User identification,
Sleep 300
ControlSend, Edit1, user, User identification
ControlSend, Edit2, password, User identification
ControlClick, Button1, User identification
The problem is - sometimes Button1
is not clicked.
When i'm execution script in most cases Button1
is clicked, but sometimes it doesn't.
When script autoexecuted on locked workstation (this is the scenario I actually need), Button1
is never clicked.
I've tried to insert Sleep, 1000
after each line in script but it didn't helped.
The question is why, and how to fix/workaround the problem
I will try today to replace
ControlSend, Edit2, password, User identification
ControlClick, Button1, User identification
with
ControlSend, Edit2, password{Enter}, User identification
probably this will work...
回答1:
I spent a week tring to solve my problem anf finally resolved it. Hope this will help to someone.
Never try to send CAPITALIZED letter to autohotkey, instead send shiftdown
and shiftup
Wrong:
ControlSend, Edit2, passworD, User identification
Right:
ControlSend, Edit2, passwor{SHIFTDOWN}d{SHIFTUP}, User identification
Also it would be better to avoid ControlClick
if possible. To click a button ControlSend
a Space
to it.
来源:https://stackoverflow.com/questions/7505667/autohotkey-sometimes-button-is-not-clicked