15,471
社区成员
发帖
与我相关
我的任务
分享
WXLRESULT MainDialog::MSWWindowProc(WXUINT message,
WXWPARAM wParam,
WXLPARAM lParam) {
if (set && message == WM_GKEY) {
void * l = (void *)lParam;
// KBDLLHOOKSTRUCT* lp = (KBDLLHOOKSTRUCT *) lParam;
// KBDLLHOOKSTRUCT* lp = static_cast<KBDLLHOOKSTRUCT *>(lParam);
// KBDLLHOOKSTRUCT* lp = dynamic_cast<KBDLLHOOKSTRUCT *>(lParam);
KBDLLHOOKSTRUCT* lp = reinterpret_cast<KBDLLHOOKSTRUCT *>(l);
cout << "MSWWindowProc() " << (lp->vkCode) << ":" << (lp->flags) << endl;
}
//
// switch (message) {
// case WM_SYSCOMMAND:
// switch (wParam) {
// case SC_SCREENSAVE:
// //::wxMessageBox(_T("Screensaver active!"), _T("Screensaver"), wxOK | wxICON_ERROR);
// break;
// }
// }
return _MainDialog::MSWWindowProc(message, wParam, lParam);
}
// Hook STDCALL
GCALL LRESULT KeyboardHookProc( int nCode,
WPARAM wParam,
LPARAM lParam) {
cout << "KeyboardHookProc() " << lParam << endl;
KBDLLHOOKSTRUCT *lp = (KBDLLHOOKSTRUCT*) lParam;
cout << "KeyboardHookProc() nCode=" << nCode << " lp->vkCode=" << lp->vkCode << " lp->flags=" << lp->flags << endl;
if (nCode < 0 || nCode == HC_NOREMOVE) {
cout << "KeyboardHookProc() nCode < 0 || nCode == HC_NOREMOVE." << endl;
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else if (lParam & 0x40000000) { //重复的消息交给下一个hook链
cout << "KeyboardHookProc() next." << endl;
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
else {
//通知主窗口,wParam参数为虚拟键码,lParam参数包含了此键的信息
if (g_hWndCaller != NULL) {
cout << "KeyboardHookProc() PostMessage" << endl;
::PostMessage(g_hWndCaller, WM_GKEY, wParam, lParam);
}
// MessageBox(NULL, L"内容", L"11111111", MB_OK);
return ::CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
}