Показать полную графическую версию : [решено] Hook
Делаю dll с hook'ом. Hook отслеживает появление нового окна (WH_CBT). Собственно хук работает (появление окна отслеживается), а как сообщить вызывающей программе о появлении нового окна?
DillerInc
04-06-2009, 12:07
ganselo, а если сделать через объекты синхронизации - события,например?
Основное приложение | библиотека
CreateEvent -> WaitForSingleObject | OpenEvent -> SetEvent
DillerInc »Решил проблему так:
В dll создал переменную флаг
bool flag = false;
И две функции
bool getFlag()
{
return flag;
}
и
void ok()
{
flag = false;
}
Если в dll хук сработал (т.е создалось какое то окно), то flag = true. А в приложении, в таймере вызываю функцию getFlag(), чтобы узнать, что появилась новое окно. Если она возвратила true, то я совершаю нужные мне действия и сообщаю dll о том, что приложение узнало о появлении нового окна, т.е вызываю функцию ok();
Но думаю эта не самый лучший вариант.
А насчет
а если сделать через объекты синхронизации - события,например? »
можно попробывать...
DillerInc
04-06-2009, 22:23
ganselo, если у вас оконное приложение,то можно из библиотеки послать какое-нибудь сообщение основному приложению,которое в свою очередь получит это сообщение через свою оконную процедуру.Если же окон нет,то тогда можно создать дополнительный поток,который и будет ждать события.Тут,я думаю,больше зависит от ваших условий в программе.
если у вас оконное приложение »
Да оконное.
то можно из библиотеки послать какое-нибудь сообщение основному приложению »
Например какое сообщение и как его послать основному?
DillerInc »
Спасибо за помощь. Всё получилось.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.