Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2011, 13:42
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию Список дочерных объектов

Привет всем.
В окне другой программы (разработан не в Delphi) имеются несколько объектов: (в языке delphi) 1 Panel, в нем 2 GroupBox и в каждом из них по две button..

Хотел узнать, как можно создать список всех имеющихся объектов, включая их классы (если можно по иерархии).
Главное (родительское) окно нашел с помощью FindWindow, а вот самих объектов не смог функцией FindWindowEx.

Функции GetWindow и GetNextWindow с флагом GW_HWNDNEXT тоже не помогли, они зацикливаются в одном объекте (т.е. не переходят на другой, после нахождения второго объекта повторяют отображать его).

Спасибо
Ответить с цитированием
  #2  
Старый 22.12.2011, 13:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

EnumChildWindows
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 22.12.2011, 14:07
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию

NumLock, а можно по конкретнее
Ответить с цитированием
  #4  
Старый 22.12.2011, 14:21
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
ну и поиск "EnumChildWindows" на форуме даст много примеров.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 22.12.2011, 16:26
serebrus serebrus вне форума
Прохожий
 
Регистрация: 22.12.2011
Сообщения: 26
Репутация: 10
По умолчанию

Вот мой код:

function GetNew(hw: HWND): BOOL; stdcall;
var s:Pchar;
begin
s:=GetMemory(200);
SendMessage(hw,WM_GetText,200,integer(s));
Form1.ListBox1.Items.Add(IntToStr(hw)+' - '+s);
FreeMemory(s);
EnumChildWindows(hw, @GetNew, 0);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s:Pchar;
p, Wnd, h:Hwnd;
buff: ARRAY [0..127] OF Char;
begin
ListBox1.Items.Clear;
p:=FindWindow(nil,'Single Code');
if p<>0 then
GetNew(p);
else
ShowMessage('Окно не найдено');

Но почемуто этот код не отображает все компоненты, как буд-то функции EnumChildWindows сказано найти только n-ое количество компонентов.
В чем может быть "ограничение"?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter