Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Окнонная процедура


Автор: RapMan 22.6.2009, 21:24
Доброе время суток!

я пишу длл которая должна подменить оконную процедуру... эта длл грузиться в адресное пространство процесса (определенного), кажется все понятно, но как узнать hWnd окна текущего процесса? 

Все заранее спасибо

Автор: Andrey44 23.6.2009, 07:02
FindWindow()

Автор: RapMan 23.6.2009, 11:24
а можно как-то без FindWindow/EnumWindows обойтись?

Автор: Andrey44 23.6.2009, 14:21
А чем FindWindow не устраивает?

Автор: GremlinProg 23.6.2009, 16:05
зная дескриптор окна, можно определить PID, в котором оно было создано: GetWindowThreadProcessId
обратного не дано, т.к. в одном процессе и потоке может быть создано не одно окно,
т.е., даже если используешь EnumWindows, будь готов обработать список окон

для текущего процесса все упрощается, особенно, если в этом процессе только один поток: EnumThreadWindows

Автор: RapMan 23.6.2009, 16:08
Спасибо! а можно как-то отследить создание новых окон во время работы чтобы автоматически и им менять оконные процедуры?

Автор: GremlinProg 23.6.2009, 16:27
Цитата(RapMan @  23.6.2009,  18:08 Найти цитируемый пост)
а можно как-то отследить создание новых окон во время работы чтобы автоматически и им менять оконные процедуры?

можно, а зачем тебе такой "полицай", да еще и на все окна?

Автор: RapMan 23.6.2009, 16:48
как?

Хочу отфильтровать некоторые сообщения в всех окнах.

Автор: GremlinProg 23.6.2009, 18:33
http://msdn.microsoft.com/en-us/library/ms632638(VS.85).aspx
обрабатывай это сообщение, оно посылается родителю, всякий раз, когда на нем создается дочернее окно

Автор: RapMan 23.6.2009, 18:40
GremlinProg, 
Большое Спасибо!!!! smile 

Автор: Earnest 23.6.2009, 19:23
Есть еще хук WH_CBT, позволяющий отследить, в частности, создание окон.

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