☆★☆在Windows NT 4.0 SP3或 Windows 2000下屏蔽系统热键的编译错误☆★☆
anjy 2002-05-27 02:59:02 在Windows NT 4.0 SP3或 Windows 2000下用底层系统钩子(Low Level Hook)WH_KEYBOARD_LL屏蔽系统热键,下面是实现底层键盘钩子的部分源代码:
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
BOOL fEatKeystroke = FALSE;
if(nCode==HC_ACTION)
{
switch(wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
PKBDLLHOOKSTRUCT p=(PKBDLLHOOKSTRUCT) lParam;
fEatKeystroke =((p->vkCode==VK_TAB)&&((p->flags&&LLKHF_ALTDOWN)!=0)) ||((p->vkCode==VK_ESCAPE)&&((p->flags&&LLKHF_ALTDOWN)!=0)) ||((p->vkCode==VK_ESCAPE)&&((GetKeyState(VK_CONTROL)&&0x8000)!=0));
break;
}
}
return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
}
在编译时出现error C2065: 'PKBDLLHOOKSTRUCT' : undeclared identifier的错误,'PKBDLLHOOKSTRUCT' 明明是在winuser.h里定义的,为什么会为定义呢?请高手指点!
屏蔽系统热键的方法请看:http://www2.ccw.com.cn/01/0126/c/0126c05_6.asp
我这里的部分源码也是摘自其中的。