ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

09.05.2010, 14:10
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
mailbrush, вот небольной пример, если я правильно понял вопрос. Положи 2 Листбокса на форму (для наглядности).
Код:
procedure TForm1.Button1Click(Sender: TObject);
var h: HWND;
i: byte;
begin
ListBox1.Clear;
ListBox2.Clear;
h:=FindWindow(nil, PChar(Заголовок окна));
GetSubChild(h);
for i:=0 to ListBox1.Items.Count-1 do
EnumProc(StrToInt(ListBox1.Items[i]), 0);
end;
Следующие процедуры взяты с delphikingdom.ru и чуть переделаны.
Код:
Procedure TForm1.GetSubChild(wd:HWnD); //
Передаем в процедуру описатель окна
верхнего уровня
Var Cw:HWnd; //
Описываем еще один описатель
Begin
// Очищать список в процедуре нельзя !!!
If WD=0 then Exit; // Если
родительское окно не определено то уходим
Cw := FindWindowEx(Wd, 0, nil, nil); // Находим
первый элемент произвольного класса
while (Cw <> 0) do // Есть еще
что искать ?
begin
ListBox1.Items.Add(IntToStr(Cw)); //
Добавим описатель в виде текста в список
Application.ProcessMessages;
// Дадим поработать другим
GetSubChild(Cw);
//Вызываем себя, но родительское
окно уже Cw
Cw := FindWindowEx(Wd, Cw, nil, nil); //
Ищем следующие дочернее окно
End;
End;
function TForm1.EnumProc (WD: HWnd; Param:
LongInt): Boolean; stdcall;
var Nm:Array[0..255] of Char; // буфер для
имени
Cs: Array[0..255] of Char; // буфер для
класса
Begin
GetWindowText(Wd,Nm,255); // считываем
текст заголовка окна
GetClassName(Wd,Cs,255); // считываем
название класса окна
ListBox2.Items.Add(String(Nm)+'/'+String(Cs));
//Запихнули в список название и класс
EnumProc:=True;
End;
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|