trids Posted December 17, 2003 Share 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? Link to comment Share on other sites More sharing options...
CyberSlug Posted December 17, 2003 Share 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! Link to comment Share on other sites More sharing options...
trids Posted December 17, 2003 Author Share 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? Link to comment Share on other sites More sharing options...
trids Posted December 17, 2003 Author Share 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 Link to comment Share on other sites More sharing options...
trids Posted December 17, 2003 Author Share 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) Link to comment Share on other sites More sharing options...
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