Z-порядок при каждом показе диалога

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

// Там не листбокс, а 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.

{/codecitation}

Добавить комментарий