Проблема с ХУКами
нужно получать уведомление о том что окно (любое) получило фокус. Устанавливаю ХУК типа WH_CBT :
Код:
SetWindowsHookEx(WH_CBT, (HOOKPROC) CBTProc, NULL, 0);
Далее, в процедуре хука делаю следующее:
Код:
LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode<0) return CallNextHookEx(0, nCode, wParam, lParam);
if(nCode == HCBT_ACTIVATE){
//ну, для начала
MessageBox(NULL, "activate", "window", 0);
}
return CallNextHookEx(0, nCode, wParam, lParam);
}
{
if(nCode<0) return CallNextHookEx(0, nCode, wParam, lParam);
if(nCode == HCBT_ACTIVATE){
//ну, для начала
MessageBox(NULL, "activate", "window", 0);
}
return CallNextHookEx(0, nCode, wParam, lParam);
}
При запуске программы и последующего хаотичного тыканья в разные окна, моя прога не выдаёт MessageBox. Более того! Устанавливая МессаджБокс чуть выше, вне IF'а, также ничего не происходит. То-есть данная процедура вообще не вызывается! Объясните, плз, что не так!
Заранее спасибо.
Цитата:
Originally posted by sadman
При запуске программы и последующего хаотичного тыканья в разные окна, моя прога не выдаёт MessageBox. Более того! Устанавливая МессаджБокс чуть выше, вне IF'а, также ничего не происходит. То-есть данная процедура вообще не вызывается! Объясните, плз, что не так!
Заранее спасибо.
При запуске программы и последующего хаотичного тыканья в разные окна, моя прога не выдаёт MessageBox. Более того! Устанавливая МессаджБокс чуть выше, вне IF'а, также ничего не происходит. То-есть данная процедура вообще не вызывается! Объясните, плз, что не так!
Заранее спасибо.
Видимо в очередной раз страдает матчасть. Хук у тебя в dll висит? Что-то мне кажется, что нет. А должен вызываться в dll, что бы глобально работать на всю систему. Вывод: читаем литературу относящуюся к данному вопросу.
спасибо. уже нашел :)