StMaSi Posted October 25, 2012 Share Posted October 25, 2012 Win XP Pro SP 3 AutoIt V3 AU3Info I have an EXE-based patch updater that spawns a GUI window/interface (attachment 1) with multiple buttons/controls/etc. I have not been able to target the window or any of the buttons/controls/etc. within. AU3Info shows me some information about it (attachments 2 - 4), but no matter what I target, nothing happens. Unfortunately, there are no command-line switches to pipe through to the installer, so I can't do anything from that point of view. Any advice/suggestions? Here's the summary information: >>>> Window <<<< Title: Upgrade Class: ThunderRT6FormDC Position: 259, 177 Size: 507, 385 Style: 0x16C80080 ExStyle: 0x00000101 Handle: 0x000E0248 >>>> Control <<<< Class: Instance: ClassnameNN: Name: Advanced (Class): ID: Text: Position: Size: ControlClick Coords: Style: ExStyle: Handle: >>>> Mouse <<<< Position: 625, 194 Cursor ID: 0 Color: 0x7D9BE3 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< Cancel Upgrade >>>> Hidden Text <<<< Link to comment Share on other sites More sharing options...
Moderators JLogan3o13 Posted October 25, 2012 Moderators Share Posted October 25, 2012 Hi, StMaSi. Can you tell us the name of the application you're installing/upgrading? Otherwise we're just shooting in the dark "Profanity is the last vestige of the feeble mind. For the man who cannot express himself forcibly through intellect must do so through shock and awe" - Spencer W. Kimball How to get your question answered on this forum! Link to comment Share on other sites More sharing options...
StMaSi Posted October 25, 2012 Author Share Posted October 25, 2012 It's an patch installer for a custom pharmacy application, written for our pharmacy. The app is called ConfigurX. The patch installer is an EXE that applies an embedded .MSP file in order to update an already-installed MSI. Unfortunately, I can't manually apply the .MSP file (after extracting the .MSP file from the EXE file) as it always errors out. Also, the vendor is no help...they say I won't be able to manually apply the .MSP file and that I just need to run the EXE and everything will be taken care of. Well, I thought it would be easier to be able to use an automation tool like AutoIt to hand this out to all of our PCs, but I just can't seem to interact with the patch installer. Thanx. Link to comment Share on other sites More sharing options...
jdelaney Posted October 25, 2012 Share Posted October 25, 2012 (edited) Send a screenshot of what is returned by this (applicaiton must already be running) $hUpgradeWin = WinGetHandle ( "[CLASS:ThunderRT6FormDC; TITLE:Upgrade]" ) If IsHWnd ( $hUpgradeWin ) Then $aClasses = WinGetClassList ( $hUpgradeWin ) Else $aClasses = "unable to find window" EndIf MsgBox ( 1,1,$aClasses ) Edited October 25, 2012 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. Link to comment Share on other sites More sharing options...
StMaSi Posted October 25, 2012 Author Share Posted October 25, 2012 Results: 1 Animation20WndClass ThunderRT6CommandButton ThunderRT6CommandButton Link to comment Share on other sites More sharing options...
jdelaney Posted October 25, 2012 Share Posted October 25, 2012 (edited) cool beans, so i'm guessing you were not using the autoit info tool properly...to get the control info, you need to move the tools crosshair over the control. Go ahead and do that against the Update button, and return us the screen shot of that, then we can help you click it...or run this, and return the output: #include <Array.au3> $hUpgradeWin = WinGetHandle ( "[CLASS:ThunderRT6FormDC; TITLE:Upgrade]" ) Dim $aControls[1][4] $iCounter = 1 If IsHWnd ( $hUpgradeWin ) Then While IsHWnd ( ControlGetHandle ( $hUpgradeWin, "","[REGEXPCLASS:.*Button; INSTANCE:" & $iCounter & "]") ) $hButton = ControlGetHandle ( $hUpgradeWin, "","[REGEXPCLASS:.*Button; INSTANCE:" & $iCounter & "]") $aPos = ControlGetPos ( $hUpgradeWin, "", $hButton ) $text = ControlGetText ( $hUpgradeWin, "", $hButton ) ReDim $aControls[$iCounter][4] $aControls[$iCounter-1][0] = $hButton $aControls[$iCounter-1][1] = $text $aControls[$iCounter-1][2] = $iCounter If IsArray ( $aPos ) Then $aControls[$iCounter-1][3] = $aPos[0] & "," & $aPos[1] & "," & $aPos[2] & "," & $aPos[3] Else $aControls[$iCounter-1][3] = "Can't get position" EndIf $iCounter += 1 WEnd Else MsgBox ( 1,1,"Unable to find window") EndIf _ArrayDisplay ( $aControls ) edit: fixed some syntax issues Edited October 25, 2012 by jdelaney IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. Link to comment Share on other sites More sharing options...
StMaSi Posted October 25, 2012 Author Share Posted October 25, 2012 (edited) I tried running the posted A3 script, but nothing happened, so I reverted to using the AU3Info program again. Here's the summary info, when hovering over just the "Update" button... >>>> Window <<<< Title: Upgrade Class: ThunderRT6FormDC Position: 160, 109 Size: 507, 385 Style: 0x16C80080 ExStyle: 0x00000101 Handle: 0x0004021A >>>> Control <<<< Class: ThunderRT6CommandButton Instance: 2 ClassnameNN: ThunderRT6CommandButton2 Name: Advanced (Class): [CLASS:ThunderRT6CommandButton; INSTANCE:2] ID: 2 Text: Upgrade Position: 256, 322 Size: 167, 23 ControlClick Coords: 69, 14 Style: 0x54012001 ExStyle: 0x00000004 Handle: 0x0010024A >>>> Mouse <<<< Position: 488, 474 Cursor ID: 0 Color: 0xECE9D8 >>>> StatusBar <<<< >>>> ToolsBar <<<< >>>> Visible Text <<<< Cancel Upgrade >>>> Hidden Text <<<< Edited October 25, 2012 by StMaSi Link to comment Share on other sites More sharing options...
jdelaney Posted October 25, 2012 Share Posted October 25, 2012 so, you would do something like this... expandcollapse popup; Get window handle $hUpgradeWin = WinGetHandle ( "[CLASS:ThunderRT6FormDC; TITLE:Upgrade]" ) If Not IsHWnd ( $hUpgradeWin ) Then $bContinue = False MsgBox ( 1,1,"Unable to get window Handle") Else $bContinue = True EndIf ; Activate window handle If $bContinue Then If Not IsHWnd ( WinActivate ( $hUpgradeWin ) ) Then $bContinue = False MsgBox ( 1,1, "Unable to activate window") EndIf EndIf ; Get control handle If $bContinue Then $hUpdateBtn = ControlGetHandle ( $hUpgradeWin, "", "[CLASS:ThunderRT6CommandButton; TEXT:Upgrade]" ) If Not IsHWnd ( $hUpdateBtn ) Then $bContinue = False MsgBox ( 1,1,"Unable to get button Handle") EndIf EndIf ; Focus on button ( I notice sometimes the click fails when skipping this step ) If $bContinue Then If Not ControlFocus ( $hUpgradeWin, "", $hUpdateBtn ) Then $bContinue = False MsgBox ( 1,1,"Unable to focus on button") EndIf EndIf ; click button If $bContinue Then If Not ControlClick ( $hUpgradeWin, "", $hUpdateBtn ) Then $bContinue = False MsgBox ( 1,1,"Unable to click button") EndIf EndIf it's a failry good (my opinion) example to use for scripting, so you know the failure point IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window. Link to comment Share on other sites More sharing options...
StMaSi Posted October 27, 2012 Author Share Posted October 27, 2012 Okay, here's the results... First, I execute the patch installer. Then, this latest AutoIt script. If the patch installer window has focus, I receive an "Unable to get button Handle" error window. If the patch installer window does not have focus, I receive an "Unable to get window Handle" error window. Any other suggestions? Thanx. 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