获取接盘输入
最彻底的是钩子,能获取、拦截系统的消息,包括按键输入消息。
最常用的是重载PreTranslateMessage,只获取拦截本程序本窗口的消息。例如:
BOOL CxxxDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: 在此添加专用代码和/或调用基类
if (pMsg->message == WM_KEYDOWN)
{
switch (pMsg->wParam)
{
case VK_RETURN: // 屏蔽回车
return TRUE;
case VK_ESCAPE:
if (IDCANCEL == AfxMessageBox(_T("exit?"), MB_OKCANCEL))
return TRUE;
break;
default:
break;
}
}
return CDialogEx::PreTranslateMessage(pMsg);
}
但是一般的该重载,当本窗口不在焦点,或者焦点在editcontrol等编辑控件上时,无法拦截到。此时可以使用rawinput
rawinput使用之前需要先注册,例如:
RAWINPUTDEVICE rawinputdevice[1];
rawinputdevice[0].usUsagePage = 0x01; // Generic Desktop Controls
rawinputdevice[0].usUsage = 0x06; // Keyboard
rawinputdevice[0].dwFlags = RIDEV_INPUTSINK;// If set, this enables the caller to receive the input even when the caller is not in the foreground. Note that hwndTar

本文介绍了几种在Windows环境下拦截键盘输入的方法,包括使用PreTranslateMessage和rawinput技术。通过示例代码展示了如何实现屏蔽特定按键及获取键盘输入。
最低0.47元/天 解锁文章
2330

被折叠的 条评论
为什么被折叠?



