关于键盘问题(高分求助)

mousefather 2003-11-04 09:51:59
我要做一个键盘测试的小程序,目的很简单,就是测试所有按键是否能用,我的做法是先在屏幕上画一个键盘,用户按一个键亮一个键,有点类似游戏手柄测试工具之类的东西,但是有个问题,大部分的键都可以测,就是一些功能键,我只想得到他按下去的键值,不想让他起作用,比如开始键,休眠,开关机键等,我虽然能得到键值,但是没办法让他失效,不知道有什么好的办法,用hook的做法好像是可以让这些键失效,不大清楚,请高手指点,顺便问一下,哪里有所有键盘键值的表?
...全文
27 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
carbon107 2003-11-11
  • 打赏
  • 举报
回复
来晚了大家都说了
yintongshun 2003-11-11
  • 打赏
  • 举报
回复
WPARAM wParam, LPARAM lParam这两个参数需要判断一下,如果你想屏蔽的键,就让他失效
flinming 2003-11-11
  • 打赏
  • 举报
回复
//拦截窗体PreTranslateMessage消息,看键盘触发哪个键
BOOL CCsDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message==WM_KEYDOWN)
{
int a = pMsg->wParam;
CString b;
b.Format("%d",a);
this->SetWindowText(b);
这个你就可以确定是哪个键触发
}

return CDialog::PreTranslateMessage(pMsg);
}
ifengfeng 2003-11-11
  • 打赏
  • 举报
回复
#include <afxwin.h> // MFC core and standard components
mousefather 2003-11-04
  • 打赏
  • 举报
回复
谢谢楼上的,不过还是存在我说的问题,功能键没办法屏蔽掉,按下win键还是会弹出开始菜单,还有关机,休眠等键,有没什么办法可以让他们失效
carbon107 2003-11-04
  • 打赏
  • 举报
回复
以下是大键盘区
f1 0x3B00
f2 0x3C00
f3 0x3D00
f4 0x3E00
f5 0x3F00
f6 0x4000
f7 0x4100
f8 0x4200
f9 0x4300
f10 0x4400
f11 0x8500
f12 0x8600
0 0x0B30
1 0x0231
2 0x0332
3 0x0433
4 0x5434
5 0x0635
6 0x0736
7 0x0837
8 0x0938
9 0x0A39
左 0x4BE0
右 0x4DE0
上 0x48E0
下 0x50E0
tab 0x0F09
- 0x0C2D
+ 0x0D3D
回车 0x1C0D

以下是小数字键盘
0 0x5200
1 0x4F00
2 0x5000
3 0x5100
4 0x4B00
5 0x4C00
6 0x4D00
7 0x4700
8 0x4800
9 0x4900
- 0x4A2D
+ 0x4E2B
回车 0xE00D

其它的编程实现
http://www.156ok.com/article/article_list.asp?account_id=920
键盘HOOK程序,看看这个能不能帮助你
ManFred2ManFred 2003-11-04
  • 打赏
  • 举报
回复
到精华区去看看hook的用法介绍吧。
mousefather 2003-11-04
  • 打赏
  • 举报
回复
WH_KEYBOARD_LL这个东西不能用啊,msdn 里有,但是我在程序里写,编译不了,是不是这个东西现在不能用了?
9headbird 2003-11-04
  • 打赏
  • 举报
回复
用底层键盘钩子LowLevelKeyboardProc()可以解决这个问题
注入钩子SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,hins,0);
在回调函数LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)中进行判断:
如果wParam==WM_SYSKEYDOWN,则再判断由lParam得到的虚拟键值是否是你想要屏蔽的键;如果是,则在此回调函数中返回1(你可以在返回1之前发送一个消息并传递键值给你的测试程序);
这样你所指定功能间就被屏蔽掉了,
在你的应用程序中你应该在你测试完毕后卸载此钩子,否则该功能键就一直被屏蔽直至系统关机或注销

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧