如何使用钩子(hook)实现键盘组合键拦截?
Keng 2003-07-09 11:11:26 我在使用TCppWebBrowser写一个程序的框架时。。发现Ctrl+n也可以对TCppWebBrowser造成创建新窗口的问题。。请问如何屏蔽Ctrl+n ,,Ctrl+b等组合键
我是用的是hook(hook代码在dll中实现)
下边是代码:
#include <windows.h>
extern "C" __declspec(dllexport) void __stdcall SetHook(HWND,bool);
#pragma argsused
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam);
static HINSTANCE hinstances;
static HANDLE handles;
static HHOOK hook;
static const mmsg=200;
static const sec=1;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
hinstances=hinst;
return 1;
}
//---------------------------------------------------------------------------
void __stdcall SetHook(HANDLE hwnd,bool nCode)
{
if(nCode)
{
handles=hwnd;
hook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)HookProc,hinstances,0);
}
else
{UnhookWindowsHookEx(hook);}
}
//---------------------------------------------------------------------------
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
char abc[255];
HANDLE hand;
HDC hdc;
EVENTMSG *keyMsg=(EVENTMSG*)lParam;
hand=GetDesktopWindow();
hdc=GetWindowDC(hand);
if(keyMsg->message==WM_KEYDOWN)
{
PostMessage(handles,mmsg,(char)keyMsg->paramL,sec);
itoa(keyMsg->paramL,abc,10);
TextOut(hdc,400,400,abc,10);
}
DeleteObject(hdc);
return(int)CallNextHookEx(hook,nCode,wParam,lParam);
}
请高手指点。。