|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Список дочерных объектов
Привет всем.
В окне другой программы (разработан не в Delphi) имеются несколько объектов: (в языке delphi) 1 Panel, в нем 2 GroupBox и в каждом из них по две button.. Хотел узнать, как можно создать список всех имеющихся объектов, включая их классы (если можно по иерархии). Главное (родительское) окно нашел с помощью FindWindow, а вот самих объектов не смог функцией FindWindowEx. Функции GetWindow и GetNextWindow с флагом GW_HWNDNEXT тоже не помогли, они зацикливаются в одном объекте (т.е. не переходят на другой, после нахождения второго объекта повторяют отображать его). Спасибо |
#2
|
||||
|
||||
EnumChildWindows
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
NumLock, а можно по конкретнее
|
#4
|
||||
|
||||
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
ну и поиск "EnumChildWindows" на форуме даст много примеров. Пишу программы за еду. __________________ |
#5
|
|||
|
|||
Вот мой код:
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-ое количество компонентов. В чем может быть "ограничение"? |