Sign in to follow this  
Followers 0
quentin

ControlFocus in a while loop

6 posts in this topic

Hi all,

I've wrote this code :

#include <Array.au3>

HotKeyset("^!x", "MyExit")

MsgBox(0,'Iddq_Esp06',"depart ?")

$avArray = _ArrayCreate("713", "1323", "1933", "2543", "3153", "3763", "4372", "4982", "5594", "6204", "6814", "7424", "8034", "8644", "9254", "9864", "10474", "11084", "11694", "12304")

_ArrayReverse( $avArray)

While UBound($avArray) > 0

MouseClickDrag ( "left", 146, 234, 90, 234)

Send(_ArrayPop($avArray))

MouseClick ( "left", 218, 54, 1, 2)

sleep(5000)

ControlFocus("UserForm1", "", "")

MouseClick ( "left", 563, 533, 1, 2)

ControlFocus("HILEVEL TestStationNT", "", "")

sleep(1500)

Wend

MouseClick ( "left", 270, 53, 1, 2)

Exit

Func MyExit()

Exit

EndFunc

My problem is it's not working as i wished...

In fact at the first iteration of the loop, everything is OK but at the second one and all next the ControlFocus seems not working (the window didn't show up)

Did somebody see a problem in my code ?

Thx

Share this post


Link to post
Share on other sites



I'm going to take a guess as to why this isn't working

I suspect the control in question initially has focus, ergo 1st time around it works

your attempting to use ControlFocus with-out an controlID, so i suspect it can't set focus to the control you want to have focus.


SciTE for AutoItDirections for Submitting Standard UDFs

 

Don't argue with an idiot; people watching may not be able to tell the difference.

 

Share this post


Link to post
Share on other sites

your attempting to use ControlFocus with-out an controlID, so i suspect it can't set focus to the control you want to have focus.

I did it because the autoit window info didn't show any ControlID for these windows. Is there any default value ?

Share this post


Link to post
Share on other sites

Since you are not focusing a control but are wanting to activate the entire window for MouseClick() and Send(), then you could just use WinActivate() instead of ControlFocus() ?

Share this post


Link to post
Share on other sites

Thx, it's working with winactivate. Did somebody can explain me the differences between these two functions ?

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Glad it works now.

ControlFocus() is used to focus a control within a given window. This helps to do actions with the chosen control.

WinActivate() brings the window to the front as the active window so functions that rely on active windows can send to them.

Send() emulates the keyboard and Mouse*() functions emulate the mouse. Normally they do require an active window to communicate successfully. Since you cannot see the controls then ControlFocus() could do more harm then good. WinActivate() will simply activate the window without interfering with the last control that had focus so you could just continue with your Send() and MouseClick(). If you need to move around the controls then normally Send('{TAB}') will move the focus around.

Edited by MHz

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0