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


Автор: Undie 19.2.2003, 07:51
Собственно, ПРОБЛЕМА. Есть хук, который ловит нажатие CTRL-SHIFT. По этому нажатию генерируется сообщение WM_USER. Если окно, которому посылают сообщение активно, то оно нормально ловится. Если же окно неактивно, сообщение пропадает в никуда. Я уж всеь интернет перерыл - не нашел в чем тут дело.. Посоветуйте, если кто имел дело с такой штукой. Пишу в C++ Builder 6.

Вот кусочки кода:

--- HookDLL.cpp ---
if (ctrl_p && shift_p)
{
MessageBox(NULL, "CTRL-SHIFT!", "...testing...", MB_OK);
PostMessage(Mmf.apphwnd, WM_USER + 2000, wParam, lParam);
} else return CallNextHookEx(0, code, wParam, lParam);

--- end ---

MessageBox работает всегда, как и задумывалось :-)
Mmf.apphwnd - хендлер окна, передается при установке хука

В описании класса:

--- Unit1.h ---
public: // User declarations
__fastcall TForm1(TComponent* Owner);
MESSAGE void __fastcall HookMsg(TMessage& Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_USER + 2000, TMessage, HookMsg)
END_MESSAGE_MAP(TForm);

--- end ---

Ловилка сообщений:

--- Unit1.cpp ---
void __fastcall TForm1::HookMsg(TMessage& Msg)
{
char s[100];
itoa(Msg.WParam, s, 10);
MessageBox(NULL, s, "ну надо же!", MB_OK);
}

--- end ---

Вот так..

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