Что нового

После обновления программы перестали срабатывать ControlGetText/WinGetText

Naisho

Знающий
Сообщения
86
Репутация
12
В общем имеется файервол Outpost. После его обновления функции ControlGetText/WinGetText перестали ловить текст из окошка запроса на соединение. По заголовку окно определяется, а вот в разделе "Visible Tex" - стало грусно. Инфо по окошку:
>>>> Window <<<<
Title: (тут не определяется, удалил чужой заголовок. должно быть "Outpost Firewall Pro")
Class: #32770
Position: 732, 427
Size: 496, 630
Style: 0x14C008CC
ExStyle: 0x00010509
Handle: 0x00190200

>>>> Control <<<<
Class: Static
Instance: 3
ClassnameNN: Static3
Name:
Advanced (Class): [CLASS:Static; INSTANCE:3]
ID: 1003
Text: C:\Program Files\Mozilla Firefox\firefox.exe
Position: 196, 74
Size: 284, 24
ControlClick Coords: 119, 4
Style: 0x50028000
ExStyle: 0x00000004
Handle: 0x00190352

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
Static
Static
Static
Static
Static
Button
Button
Button
Button
ComboBox
Button
Button
Static
Button
Button
Static
SysLink


>>>> Hidden Text <<<<
Static
SysListView32
SysHeader32
Static
Button

###AutoIt Control Viewer Report File###

Environment
===========
System:
Aero:

Window
======
Title: Outpost Firewall Pro
Class: #32770
Style: 0x14C008CC
ExStyle: 0x00010509
Position: 732, 427
Size: 496, 630
Handle: 0x00080C66
PID: 1568
Path:

Control
=======
Class: Static
Instance: 3
ID: 1003
Style: 0x50028000
ExStyle: 0x00000004
Position: 196, 74
Size: 284, 24
Handle: 0x000B0C22
Text:

В общем нужно получить текст контролов "Text: C:\Program Files\Mozilla Firefox\firefox.exe" (отличаются номером INSTANCE)

Кстати, конструкция из примера по функции _WinAPI_WindowFromPoint тоже не отдаёт текст

Код:
#include <WinAPI.au3>
#include <Constants.au3>
Global $Struct = DllStructCreate($tagPoint), $hTmpWnd

HotKeySet("{ESC}", "_Quit")
Func _Quit()
    Exit
EndFunc

While 1
    Sleep(100)
    $xy = MouseGetPos()
    DllStructSetData($Struct, "x", $xy[0])
    DllStructSetData($Struct, "y", $xy[1])
    $hWnd = _WinAPI_WindowFromPoint($Struct) ; дескриптор окна под курсором
    If $hTmpWnd <> $hWnd Then ; если дескриптор изменился, то запрос новых данных
        $a = WinGetClientSize($hWnd) ; клиентские размеры
        $b = WinGetPos($hWnd) ; коорд. и размеры окна
        $tStru = _WinAPI_GetWindowRect($hWnd) ; тоже что WinGetPos
        $info = _
                'Текст = ' & WinGetTitle($hWnd) & @CRLF & _
                'Класс = ' & _WinAPI_GetClassName($hWnd) & @CRLF & _
                'Идентификатор = ' & _WinAPI_GetDlgCtrlID($hWnd) & @CRLF & _
                'Прямоугольник = ' & DllStructGetData($tStru, 1) & ' - ' & DllStructGetData($tStru, 2) & ' - ' & DllStructGetData($tStru, 3) & ' - ' & DllStructGetData($tStru, 4) & @CRLF & _
                'x=' & $b[0] & @CRLF & 'y=' & $b[1] & @CRLF & 'w=' & $b[2] & ' (кл.' & $a[0] & ')' & @CRLF & 'h=' & $b[3] & ' (кл.' & $a[1] & ')'
        ToolTip($info)
        $hTmpWnd = $hWnd
    EndIf
WEnd

пишет всегда пустую строку
 
Верх