Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2010, 11:06   #1
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию Как получить классы всех дочерних окон формы

Как получить классы всех дочерних окон формы?
Будь то в TreeView или даже в Memo, у меня никак не получается,
проше помощи

с помощью FindWindow, GetWindow и тп...

в целом мне нужно немного по другому,
мне на форме нужно найти 2 объекта,
если уже есть поиск встроенный который сразу выдаст wnd будет отлично
иначе мне алгоритм прорисовки путя до объекта придётся писать

Последний раз редактировалось rangel; 02.09.2010 в 11:15.
rangel вне форума Ответить с цитированием
Старый 02.09.2010, 11:08   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

EnumChildWindows + поиск, есть примеры которые надо чуток изменить для вашей цели(пару строк изменить)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2010, 11:12   #3
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

ссыльните если не трудно
rangel вне форума Ответить с цитированием
Старый 02.09.2010, 11:22   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поиск по форуму вообще то.

Код:
function EnumClasses(HWND:THandle;lParam:Integer):BOOL;stdcall;
var s:string;
begin
 SetLength(s,256);
 SetLength(s,GetClassName(HWND,s[1],256));
 Form1.Memo1.Lines.Add(s);
 Result:=true;
end;

на кнопке пишем
 EnumChildWindows(<хендл окна, у которого перечисляем>,@EnumClasses,0);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.09.2010, 11:42   #5
rangel
Пользователь
 
Регистрация: 31.10.2007
Сообщений: 65
По умолчанию

спасибо и последний вопрос,
как узнать иерархию?

тоесть список получаю, но какие объекты из какой группы незнаю...
rangel вне форума Ответить с цитированием
Старый 02.09.2010, 11:45   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

всмысле из какой группы?
вы получаете не всю иерархию, а только один уровень оной(окна, дочерние именно к указаному хендлу)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.10.2010, 12:41   #7
m.a.x.i.m
Пользователь
 
Регистрация: 29.03.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
всмысле из какой группы?
вы получаете не всю иерархию, а только один уровень оной(окна, дочерние именно к указаному хендлу)
неверно, в данном случае мы получаем классы всех дочерних окон, а не только прямых потомков.
m.a.x.i.m вне форума Ответить с цитированием
Старый 12.10.2014, 17:04   #8
xwicked
Участник клуба
 
Аватар для xwicked
 
Регистрация: 21.03.2010
Сообщений: 1,508
Сообщение

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
поиск по форуму вообще то.

Код:
function EnumClasses(HWND:THandle;lParam:Integer):BOOL;stdcall;
var s:string;
begin
 SetLength(s,256);
 SetLength(s,GetClassName(HWND,s[1],256)); //Здесь ошибка
 Form1.Memo1.Lines.Add(s);
 Result:=true;
end;

на кнопке пишем
 EnumChildWindows(<хендл окна, у которого перечисляем>,@EnumClasses,0);
Пробую в Delphi 2005 из состава BDS 2006 - не получается, пишет "Несовместимые типы Char и PAnsiChar".

Помоги чайнику что поправить?
Google - лучший помощник программиста.
---
моя лаборатория | мой FaceBook
xwicked вне форума Ответить с цитированием
Старый 12.10.2014, 17:36   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
SetLength(s,GetClassName(HWND,Addr(s[1]),256));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заставить форму всегда быть поверх всех окон AnnNet Общие вопросы Delphi 9 11.12.2013 16:16
Как узнать Handle всех окон с заданным названием? Ga-sergey Win Api 3 24.05.2010 23:35
Расположение дочерних MDI окон слева-направо и сверху-вниз Umdis Общие вопросы Delphi 2 30.11.2009 07:05
Получить тексты всех окон в системе micaell Win Api 1 25.02.2009 09:02
Как узнать список всех окон Никки Общие вопросы Delphi 5 23.01.2008 08:10