Delphi World - Z-порядок при каждом показе диалога
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
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.

Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования