#2356 closed Bug (Works For Me)
ControlGetText return blank string, but Window Info tool work without fail
Reported by: | anonymous | Owned by: | |
---|---|---|---|
Milestone: | Component: | AutoIt | |
Version: | Other | Severity: | None |
Keywords: | Cc: |
Description
ControlGetText and Window Info tool seems work differently and while second get result without fail, fist return blank string.
>>>> Control <<<< Class: Static Instance: 5 ClassnameNN: Static5 Name: Advanced (Class): [CLASS:Static; INSTANCE:5] ID: 1002 Text: ftp1-zlb.vips.scl3.mozilla.com, HTTP (TCP:80) <--------------- this string Position: 196, 102 Size: 284, 24 ControlClick Coords: 60, 10 Style: 0x50024000 ExStyle: 0x00000004 Handle: 0x00C805F6 >>>> Visible Text <<<< Static Static Static Static Static Button Button Button Button ComboBox Button Button Static Button Button Static SysLink
discussion can be seen here:
http://www.autoitscript.com/forum/topic/150535-getting-text-from-control-the-window-info-tool-way/?hl=controlgettext#entry1077799
script that reproduces the problem:
#include #include $a = WinList ( "Outpost Firewall Pro" ) For $i = 1 To $a[0][0] Var_GetAllWindowsControls2($a[$i][1]) Next Func Var_GetAllWindowsControls2($hCallersWindow) ; Get all list of controls $sClassList = WinGetClassList($hCallersWindow) ; Create array $aClassList = StringSplit($sClassList, @CRLF, 2) ; Sort array _ArraySort($aClassList) _ArrayDelete($aClassList, 0) ; Loop $iCurrentClass = "" $iCurrentCount = 1 $iTotalCounter = 1 For $i = 0 To UBound($aClassList) - 1 If $aClassList[$i] = $iCurrentClass Then $iCurrentCount += 1 Else $iCurrentClass = $aClassList[$i] $iCurrentCount = 1 EndIf $hControl = ControlGetHandle($hCallersWindow, "", "[CLASSNN:" & $iCurrentClass & $iCurrentCount & "]") ;$text = StringRegExpReplace(ControlGetText($hCallersWindow, "", $hControl),"[\n\r]","[email="{@CRLF"]{@CRLF[/email]}") $text = ControlGetText($hCallersWindow, "", $hControl) $aPos = ControlGetPos($hCallersWindow, "", $hControl) $sControlID = _WinAPI_GetDlgCtrlID($hControl) If IsArray($aPos) Then ConsoleWrite("ControlCounter=[" & $iTotalCounter & "] ControlID=[" & $sControlID & "] Handle=[" & $hControl & "] ClassNN=[" & $iCurrentClass & $iCurrentCount & "] XPos=[" & $aPos[0] & "] YPos=[" & $aPos[1] & "] Width=[" & $aPos[2] & "] Height=[" & $aPos[3] & "] Text=[" & $text & "]." & @CRLF) Else ConsoleWrite("ControlCounter=[" & $iTotalCounter & "] ControlID=[" & $sControlID & "] Handle=[" & $hControl & "] ClassNN=[" & $iCurrentClass & $iCurrentCount & "] XPos=[winclosed] YPos=[winclosed] Width=[winclosed] Height=[winclosed] Text=[" & $text & "]." & @CRLF) EndIf If Not WinExists($hCallersWindow) Then ExitLoop $iTotalCounter+=1 Next EndFunc
Attachments (0)
Change History (4)
comment:1 Changed 11 years ago by TicketCleanup
- Version set to Other
comment:2 Changed 11 years ago by Jon
- Resolution set to Works For Me
- Status changed from new to closed
ControlGetText() and Au3Info use the same engine in the next beta. If not resolved then reopen. But I will need an example script that I can use to repo.
comment:3 Changed 11 years ago by anonymous
While testing beta 11 run into some regress:
WinGetClassList($hWnd)
Help: Class names are linefeed (@LF) separated. - actually not.
#2356 it seems its not work for me (for outpost window)
#include <Array.au3> $a = WinList("Outpost Firewall Pro") #cs $a : [0]|2| [1]|Outpost Firewall Pro|0x00190712 <<<<< this window [2]|Outpost Firewall Pro 7.6|0x00010202 #ce $hWnd = WinGetHandle("Outpost Firewall Pro") ConsoleWrite("$hWnd = "&$hWnd&@CRLF) ConsoleWrite("Title = "&WinGetTitle($hWnd)&@CRLF) $hControl = ControlGetHandle($hWnd, "", "[CLASSNN:Static5]") ConsoleWrite("$hControl by $hWnd = "&$hControl&@CRLF) $hControl = ControlGetHandle("Outpost Firewall Pro", "", "[CLASS:Static; INSTANCE:5]") ConsoleWrite("$hControl by Title = "&$hControl&@CRLF) $text = ControlGetText($hWnd, "",$hControl) $err = @error ConsoleWrite("$text = "&$text&@CRLF) ConsoleWrite("ControlGetText @error = "&$err&@CRLF) #cs >Running:(3.3.9.11):C:\Program Files (x86)\AutoIt3\beta\autoit3.exe "E:\Auto-it scripts\Test\test_17.au3" --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop $hWnd = 0x00190712 Title = $hControl by $hWnd = 0x004306CE $hControl by Title = 0x004306CE $text = ControlGetText @error = 1 +>21:42:39 AutoIt3.exe ended.rc:0 >Exit code: 0 Time: 0.420 #ce #cs >>>> Window <<<< Title: E:\Auto-it scripts\Test\test_17.au3 - SciTE [27 of 27] <<< strange, its title of SciTE window behind Outpost window Class: #32770 Position: 165, 150 Size: 496, 630 Style: 0x14C008CC ExStyle: 0x00010509 Handle: 0x00190712 >>>> Control <<<< Class: Static Instance: 5 ClassnameNN: Static5 Name: Advanced (Class): [CLASS:Static; INSTANCE:5] ID: 1002 Text: ftp2-zlb.vips.scl3.mozilla.com, HTTP (TCP:80) Position: 196, 102 Size: 284, 24 ControlClick Coords: 109, 14 Style: 0x50024000 ExStyle: 0x00000004 Handle: 0x004306CE #ce
comment:4 Changed 9 years ago by ROSELLE DOUGHERTY
Helpful writing , With reference to which , if anybody requires to rearrange PDF or PNG files , I saw notice here http://goo.gl/LnvmUF
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
Automatic ticket cleanup.