Z-порядок при каждом показе диалога
// Там не листбокс, а 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);
begin
repeat // Ищем следующее в 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.
|
|