HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 09.05.2010, 14:10
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

Репутация: 108
Отправить сообщение для =Zeus= с помощью ICQ
По умолчанию

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;
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ