trids Posted December 17, 2003 Posted December 17, 2003 Sometimes the Spy reports multiple controls when I inspect a single control on form that I want to automate. Latest incident: a checkbox is identified either as Button89 or Button62 or even Button98.. as I hover over the control. Seems like Button62 is associated with the lower half of the control, while the others contend for the upper-half somehow!When I actually check/uncheck the checkbox, it sometimes gets identified as Button62, sometimes as Button89. Doesn't appear to make a difference whether I'm over the box-portion of the control or over the label-portion. Any ideas?
CyberSlug Posted December 17, 2003 Posted December 17, 2003 (edited) Use another program to get the button class. I like a standalone program called Enabler; it's site is gone, but you can get it hereRun the program, then right-click on its "Class" caption, and drag the now-crosshair-shaped mouse to your mystery checkbox.Hope that helpsSometimes Enabler has problems getting a hold of controls that are in frames, but there are other spy programs that you can try.... Edited December 17, 2003 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig!
trids Posted December 17, 2003 Author Posted December 17, 2003 Aha! Here's what is happening ..The checkbox control is on a tabbed dialog. Seems like my Spy is reporting whatever it can see that is "under the mouse" .. even when the controls that it sees are on other tabs/layers (or invisible or whatever)!So it's not exactly lying - but it certainly isn't telling the truth. Mind you, they say the truth is relative. Here's a workaround that might come in useful:;Name of the dialog.. $sTitle = "VirusScan On-Access Scan Properties" ;set focus using the control's hotkey assignment.. Send("!s") ;Interrogate it for it's name.. $sCtl = ControlGetFocus($sTitle ,"") ;Aim a checkmark at it ControlCommand($sTitle, "", $sCtl, "Check" ,"")BTW .. turns out the control is actually named Button107 - lol!Any chance of training the Spy to be able to distinguish between targets on a tabbed dialog?
trids Posted December 17, 2003 Author Posted December 17, 2003 Thanks CyberSlug .. neat little tool - I like the way it highlights exactly what it's reporting on. But as you say, it can't seem to find the contorls in frames. Thanks anyway .. and I hope the workaround above helps anyone else trying to automate such dialogs. Meantime .. if anyone has recommendations for reliable spies .. or there is a chance of enhancing our built-in spy, I'm listening
trids Posted December 17, 2003 Author Posted December 17, 2003 Hmmm .. my quick-fix proved unreliable for some reason: sometimes the hotkey to set focus at a widget doesn't let the ControlGetFocus work properly. However .. here's a little tool I came up with to help identify selected widgets and list them to the clipboard expandcollapse popup;-------------------------------------------------------------------- ;Hitman.au3 - for when you can't find a spy to do the dirty work =o) ;-------------------------------------------------------------------- ;Get the user ready $sX = "Click [OK] here: when you have started the application" & @CRLF $sX = $sX & "whose form you wish to interrogate for widget names." & @CRLF & @CRLF $sX = $sX & "A countdown will then start, to give you time to select the first" & @CRLF $sX = $sX & "widget to interrogate." MsgBox(4096 + 64, @ScriptName, $sX) ;Start a countdown for the user to find his target window ProgressOn("Quick! Find your target window","Counting down..") For $k = 0 to 4 ProgressSet(100 - 20 * $k) Sleep(1000) next $sTitle = WinGetTitle("","") ;whatever has focus by now ProgressOff() ;Loop around and hit selected targets till assignment is terminated by user $sFinalClip = "" do ;Carry out the hit WinActivate($sTitle, "") $sCtl = ControlGetFocus( $sTitle ,"") $sCtlText = ControlGetText($sTitle,"", $sCtl) ;Record widget name to the clipboard ClipPut($sCtl) ;Build the final solution - here are two alternative formats ; $sFinalClip = $sFinalClip & $sCtl & @TAB & "; " & $sCtlText & @CRLF $sFinalClip = $sFinalClip & ";Widget = [" & $sCtlText & "]" & @CRLF & @TAB & $sCtl & @CRLF ;Report on it and ready the user for his next assignment $sX = "Window Title = " & $sTitle $sX = $sX & @CRLF & "Widget name = " & $sCtl & " (has been copied to clipboard)" $sX = $sX & @CRLF & @CRLF & "Select another widget there and press [OK]," $sX = $sX & @CRLF & "or press [Cancel] to quit." until MsgBox (4096 + 64 + 1, @ScriptName, $sX) = 2;2=CANCEL ;Say goodbye ClipPut($sFinalClip) $sX = "This journal of hits has been copied to the clipboard:" & @CRLF & @CRLF $sX = $sX & $sFinalClip MsgBox (4096 + 64, @ScriptName, $sX)
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now