// Там не листбокс, а EDIT, но суть точно та же. Чтобы получить текст, а не// записать его, надо просто использовать Get вместо Set. Судя по тому, что// программа уже 2 года работает без малейших проблем, Z-порядок при каждом// показе диалога один и тот же.program Project1;
uses
Windows, Messages;
const
Title1 = 'Установка связи';
Title2 = 'Удаленное соединение';
Login = '...';
Password = '...';
var
Wnd: HWND;
Control: array [0..127] of char;
procedure TypeTextIntoNextEdit(AText:string);
beginrepeat// Ищем следующее в Z-порядке окно класса EDIT
Wnd := GetWindow(Wnd, GW_HWNDNEXT);
GetClassName(Wnd, Control, SizeOf(Control))
until Control = 'Edit';
SendMessage(Wnd, WM_SETTEXT, 0, Integer(PChar(AText))) // Вводим текстend;
begin
Wnd := FindWindow(nil, Title1); // Это окно самого диалогаif Wnd = 0 then// Если не найдено, ищем другой диалог begin
Wnd := FindWindow(nil, Title2);
if Wnd = 0 then Exit;
end;
Wnd := GetWindow(Wnd, GW_CHILD); // Это верхний комбобокс
TypeTextIntoNextEdit(Login); // Вводим логин
TypeTextIntoNextEdit(Password) // Вводим парольend.
Предложение: Каждый раз при показе диалога программа ищет следующее окно класса EDIT в Z-порядке, вводит текст логина и пароля с помощью процедуры TypeTextIntoNextEdit.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.