如何用HOOK屏蔽“Shift”和“Ctrl”键? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用WH_KEYBOARD,WH_GETMESSAGE好像无法屏蔽 /******************************************************************************Module: DisableLowLevelKeys.cppNotices: Written 2000 Jeffrey Richter******************************************************************************/#define _WIN32_WINNT 0x0400#include <Windows.h>///////////////////////////////////////////////////////////////////////////////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));}///////////////////////////////////////////////////////////////////////////////int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) { // Install the low-level keyboard & mouse hooks HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinstExe, 0); // Keep this app running until we're told to stop MessageBox(NULL, TEXT("Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled.\n") TEXT("Click \"Ok\" to terminate this application and re-enable these keys."), TEXT("Disable Low-Level Keys"), MB_OK); UnhookWindowsHookEx(hhkLowLevelKybd); return(0);}看看有帮助吗? MFC如何实现调用cmd命令,且如何获取cmd命令返回的结果? 菜单互斥问题 求助定时器问题 如何进行含有NULL字符串的copy 操作? ListCtrl控件编辑,CEdit传不过去数据,怎么办? 巾帼IT群16166910 新手提問 关于Edit中数据的格式问题 讨论:数据库的学习,上者有分!!! 关于MFC创建是用CSocket创建客户端的问题? 如何获得记录的个数? 寻找能打包/解包ISO镜像文件的控件
WH_GETMESSAGE好像无法屏蔽
Module: DisableLowLevelKeys.cpp
Notices: Written 2000 Jeffrey Richter
******************************************************************************/
#define _WIN32_WINNT 0x0400
#include <Windows.h>
///////////////////////////////////////////////////////////////////////////////
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));
}
///////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int)
{
// Install the low-level keyboard & mouse hooks
HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hinstExe, 0); // Keep this app running until we're told to stop
MessageBox(NULL,
TEXT("Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled.\n")
TEXT("Click \"Ok\" to terminate this application and re-enable these keys."),
TEXT("Disable Low-Level Keys"), MB_OK);
UnhookWindowsHookEx(hhkLowLevelKybd); return(0);
}看看有帮助吗?