Что нового

Возможно ли ,Получить содержимое элемента GUI зная только его координаты ?

cdxn

Новичок
Сообщения
2
Репутация
0
как получить текстовое содержимое лейбла в переменную
если известны только его координаты ,?

Код:
GUICtrlCreateLabel("ЭТОТ ТЕСТ НАМ ОЧЕНЬ НУЖЕН", 115, 46, 160, 17)

Возможно ли, используя только известные координаты (например крайние 115 46 или предполагаемые центральные)получить ТЕКСТ ?
Примечание .Есть решение с помощью перемещения курсора мышки, Есть ли другая альтернатива ?
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <WinAPIEx.au3>

$hForm = GUICreate('')
GUICtrlCreateLabel('ЭТОТ ТЕСТ НАМ ОЧЕНЬ НУЖЕН', 15, 46, 200, 17)
GUICtrlCreateLabel('А ЭТОТ НЕ НУЖЕН', 15, 65, 200, 17)
GUISetState()

MsgBox(0, '', GetText($hForm, 15, 46))

While 1
	Switch GUIGetMsg()
		Case -3
			Exit
	EndSwitch
WEnd

Func GetText($hWnd, $iLeft, $iTop)
    Local $Enum = _WinAPI_EnumChildWindows($hWnd)
    For $i = 1 To UBound($Enum) -1
		Local $aPos = ControlGetPos($Enum[$i][0], '', '')
        If (($aPos[0] = $iLeft) And ($aPos[1] = $iTop)) Then
		    Return GUICtrlRead(_WinAPI_GetDlgCtrlID($Enum[$i][0]))
		EndIf
    Next
	Return SetError(1, 0, '')
EndFunc


И вообще... управляющие элементы находятся в своём окне или чужом? Если в своем, то почему не так?

Код:
...
$iLabel_1 = GUICtrlCreateLabel('ЭТОТ ТЕСТ НАМ ОЧЕНЬ НУЖЕН', 15, 46, 200, 17)
MsgBox(0, '', GUICtrlRead($iLabel_1))
...
 
Верх