怎样捕获键盘消息? 我想写一个程序,要让所有运行着的windows程序都不再响应键盘消息..有哪些API可用??请高人指点一下. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用全局键盘钩子,屏蔽按键消息回调函数参考:LRESULT CALLBACK hookproc(int nCode,WPARAM wParam,LPARAM lParam){ if(nCode<0) { return CallNextHookEx(hHook,nCode,wParam,lParam); } if(nCode==HC_ACTION) { return TRUE; //屏蔽键盘按键消息 } return CallNextHookEx(hHook,nCode,wParam,lParam);}如果你要屏蔽WIN和其他的一些系统组合键,需要使用低级键盘钩子回调函数:LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam){ BOOL fEatKeystroke = FALSE; PKBDLLHOOKSTRUCT p = NULL; if (nCode == HC_ACTION) { p = (PKBDLLHOOKSTRUCT) lParam; switch (wParam) { case WM_KEYDOWN: // Backdoor to user information if (p->vkCode == VK_F8) { ::MessageBox(NULL,"Let's make things better and better!\n","HQ Tech",MB_OK); break; } case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP: fEatKeystroke = (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN) || // 屏蔽Win // 屏蔽Alt+Tab ((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) || // 屏蔽Alt+Esc ((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) || // 屏蔽Ctrl+Esc ((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)); break; default: break; } } return (fEatKeystroke ? TRUE : CallNextHookEx(glhHook,nCode,wParam,lParam));} 用全局键盘钩子http://dev.csdn.net/article/28/article/33/33819.shtm "WNDENUMPROC" 类型的形参不兼容 请教高手原始套接字问题 文件监控,虚心请教,望各位大侠多多指点,在线 关于一个进程外COM的问题 一个CString对象str1="大家好abc你们=23"; 如何求出该字符对象中字符的个数 高手帮忙,用图像遗传算法求阀值的算法。 动态改变列表框高度 为什么我定义的类没有调用析构函数? 关于VC+ACCESS的问题? 诸位仁兄:.net发布了吗? 什么插件能在VC中实现VB那种(过程/全模块)查看 编译一个dll,在本机运行没问题,做了安装包后换了一个机器运行出现问题
{
if(nCode<0)
{
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
if(nCode==HC_ACTION)
{
return TRUE; //屏蔽键盘按键消息
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
如果你要屏蔽WIN和其他的一些系统组合键,需要使用低级键盘钩子回调函数:LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
BOOL fEatKeystroke = FALSE;
PKBDLLHOOKSTRUCT p = NULL; if (nCode == HC_ACTION)
{
p = (PKBDLLHOOKSTRUCT) lParam;
switch (wParam)
{
case WM_KEYDOWN:
// Backdoor to user information
if (p->vkCode == VK_F8)
{
::MessageBox(NULL,"Let's make things better and better!\n","HQ Tech",MB_OK);
break;
}
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
fEatKeystroke = (p->vkCode == VK_LWIN) || (p->vkCode == VK_RWIN) || // 屏蔽Win
// 屏蔽Alt+Tab
((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
// 屏蔽Alt+Esc
((p->vkCode == VK_ESCAPE) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
// 屏蔽Ctrl+Esc
((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
break;
default:
break;
}
} return (fEatKeystroke ? TRUE : CallNextHookEx(glhHook,nCode,wParam,lParam));
}
http://dev.csdn.net/article/28/article/33/33819.shtm