Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Узнать хэндл окна по хэндлу его компонента.


Автор: Firster 29.11.2007, 02:01
Такая делема...Установлен глобальный МЫШИНЫЙ хук. При клике мышкой, например, на окне любого приложения МОЕЙ программе передается сообщение от ДЛЛ, мол произведен КЛИК. Далее МОЯ программа получает координаты мыши и через функцию WindowFromPoint получаю хэндл...

Вот здесь и есть ВОПРОС. Если клик произошел на заголовке окна, тогда  WindowFromPoint возвращает ХЭНДЛ ОКНА, но если клик произведен в другой области окна, тогда  WindowFromPoint возвращает хэндл этого компонента. 

Как получить по хэндлу компонента ХЕНДЛ ОКНА? Может кто -нить сталкивался, помогите пожалуйста.

П.С. Функцию SetForegroundWindow, а потом GetActiveWindow не предлагать. Уже опробовано. Не работает...

Автор: dumb 29.11.2007, 09:41
теперь опробуй GetParent smile

Автор: Firster 29.11.2007, 12:21
dumb, дает НОЛЬ

Автор: MetalFan 29.11.2007, 12:50
упс) значит это окно у тебя верхнего уровня
ну и в догонку:
Цитата(MSDN)

GetParent
...
Remarks

Note that, despite its name, this function can return an owner window instead of a parent window. To obtain the parent window and not the owner, use GetAncestor with the GA_PARENT flag


Автор: Firster 30.11.2007, 00:31
вот исходник даю....Ничего не выходит......... smile 

Автор: Firster 30.11.2007, 00:48
 smile 

MetalFan, СПАСИБО, ПРОСТО ОГРОМНОЕ СПАСИБО. 

Использовал 
GetAncestor (hWnd, x)
где x = GA_ROOT

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)