![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать handle дочерних окон приложения? [D3, D4, D5, Win95/98]
dihlos © (2002-07-01 18:13:00)Помогите,по сабжу плиз!
Спасибо.
Volj (2002-07-02 19:52:00) [1]function EnumProc (WinHandle: HWnd; Param: LongInt): Boolean; stdcall;
begin
// Твои действия с Handle... Все handles дочерних окон передаются сюда.
end;
begin
EnumChildWindows(ParentHandle, @EnumProc, 0);
end;
dihlos (2002-07-02 12:06:00) [2]Никто не знает?:(
dihlos (2002-07-02 11:32:00) [3]2 All
А можно примерчик, плиз?
Смысл весь в том, что мне нужно затенить кнопку Х в многооконном приложении...
Ну к примеру у меня есть Quattro Pro, я открываю таблицу - в ней макрос. Получаю как бы отдельное приложение. Всякие там менюшки создает и.т.д... Выход тоже через меню и закрывает все Quttro Pro.
А вот если я закрываю дочернее окно (с моим макросом) через эту самую кнопочку Х, то мы вылетаем в оболочку и уже нормально закрыть это не могем, только через "три пальца", но суть не в этом.
Нужно зная имя главного окна затенить кнопочку Х у всех его дочерних окон.
Помогите плиз!!!
Заранее благодарен!!!
Юрий Зотов (2002-07-01 22:56:00) [4]> Но подозреваю, что не отлавливает созданные
> как TForm.Create(nil).
Зря подозреваете. Отловит все дочерние окна ПРЯМЫМ родителем (то есть, Parent"ом, а не Owner"ом) которых является эта самая форма.
А если нужны еще и НЕ прямые child"ы - пишется рекурсия.
anatol (2002-07-01 19:51:00) [5]vot zdes" mojno pro4itat" pro EnumChildWindows :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/enumchildwindows.asp
Volj (2002-07-01 19:44:00) [6]EnumChildWindows - все дочерние окна указанного Но подозреваю, что не отлавливает созданные как TForm.Create(nil).
Более надежным способом представляется:
Получить ид процесса GetWindowThreadProcessId,
затем получить список окон, созданных в данном процессе с помощью EnumThreadWindows.
dihlos (2002-07-01 19:33:00) [7]Eсть Caption главного окна - его handle я могу узнать.
Как узнать остальные?
Заранее благодарен.
Volj (2002-07-01 19:09:00) [8]Т.е. тебе нужны handle всех окон, которые выполняются в контексте потока приложения? И какие у тебя начальные данные (Handle одного из окон, handle процесса, Application, etc...)?