Что нового

[Элементы GUI] Есть ли какой то универсальный путь определения "$hWnd" для элемента окна?

Tapok

Новичок
Сообщения
204
Репутация
0
Есть Edit, про него все известно, что из ControlViewer вставить вместо "$hWnd"?

Код:
_GUICtrlEdit_SetText($hWnd, $sText)


Есть ли какой то универсальный путь определения "$hWnd" для элемента окна?
 

Вложения

  • Edit.png
    Edit.png
    35.9 КБ · Просмотры: 17

alex33

Скриптер
Сообщения
1,457
Репутация
186
Вот написал простой примерчик:
Код:
#include <GuiEdit.au3> ; подключаем библиотеку
Global $hWindow, $hEdit; объявляем переменные
Run("notepad.exe", "", @SW_MAXIMIZE); запускаем notepad на весь экран
$hWindow = WinWait("[CLASS:Notepad]", "", 5); ждём окно notepad в течении 5 секунд
If Not $hWindow Then Exit MsgBox(16, "Ошибка", "Окно notepad не найдено"); если окно не найдено, то выход
$hEdit = ControlGetHandle($hWindow, "", "Edit1"); получаем hwnd элемента edit
_GUICtrlEdit_SetText($hEdit, "hello world!"); устанавливаем туда текст

For $k = 1 To 10
	_GUICtrlEdit_AppendText($hEdit, @CRLF & "Проход цикла " & $k); добавляем текст в Edit1 окна notepad...
	Sleep(2000); задержка 2 секунды
Next
Sleep(5000); задержка 5 секунд
_GUICtrlEdit_SetText($hEdit, ""); очищаем edit
WinClose($hWindow); закрываем notepad
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tapok
Так тоже должно работать
Код:
ControlSetText("Заголовок окна", "", "Edit2", "текст")
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Inni, спасибо, работает!
alex33, спасибо, тоже работает!

Код:
WinActivate ("Конструктор тестов")
$hWindow = WinWait("[Class:Afx:400000:8:10003:0:51123]", "", 20);
If Not $hWindow Then Exit MsgBox(16, "Ошибка", "Окно notepad не найдено");
$hEdit = ControlGetHandle($hWindow, "", "Edit2");
_GUICtrlEdit_SetText($hEdit, "hello world!");


Единственное, что, в отличие от Блокнота, Class окна все время меняется от запуска к запуску. Есть что-то еще, более постоянное, на что можно ссылаться?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tapok
Class окна все время меняется
И тем не менее там есть постоянная часть, по которой можно найти окно при помощи REGEXPCLASS
Код:
$hWindow = WinWait("[REGEXPCLASS:Afx:400000:8:10003]", "", 20)
Если я правильно понял из предыдущей темы, то это класс окна конструктора. Если так, то его можно просто по заголовку найти
Код:
$hWindow = WinWait("Конструктор тестов", "", 20)
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Да,
Код:
$hWindow = WinWait("Конструктор тестов", "", 20);

находит.
Спасибо, уже легче! :smile:
 
Верх