关于键盘问题(高分求助)
我要做一个键盘测试的小程序,目的很简单,就是测试所有按键是否能用,我的做法是先在屏幕上画一个键盘,用户按一个键亮一个键,有点类似游戏手柄测试工具之类的东西,但是有个问题,大部分的键都可以测,就是一些功能键,我只想得到他按下去的键值,不想让他起作用,比如开始键,休眠,开关机键等,我虽然能得到键值,但是没办法让他失效,不知道有什么好的办法,用hook的做法好像是可以让这些键失效,不大清楚,请高手指点,顺便问一下,哪里有所有键盘键值的表? 问题点数:0、回复次数:9Top
1 楼carbon107(<软件开发思想.h>)回复于 2003-11-04 10:25:27 得分 0
以下是大键盘区
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程序,看看这个能不能帮助你Top
2 楼mousefather(气死猫)回复于 2003-11-04 11:32:46 得分 0
谢谢楼上的,不过还是存在我说的问题,功能键没办法屏蔽掉,按下win键还是会弹出开始菜单,还有关机,休眠等键,有没什么办法可以让他们失效Top
3 楼9headbird(九头鸟)回复于 2003-11-04 13:21:10 得分 0
用底层键盘钩子LowLevelKeyboardProc()可以解决这个问题
注入钩子SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc,hins,0);
在回调函数LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)中进行判断:
如果wParam==WM_SYSKEYDOWN,则再判断由lParam得到的虚拟键值是否是你想要屏蔽的键;如果是,则在此回调函数中返回1(你可以在返回1之前发送一个消息并传递键值给你的测试程序);
这样你所指定功能间就被屏蔽掉了,
在你的应用程序中你应该在你测试完毕后卸载此钩子,否则该功能键就一直被屏蔽直至系统关机或注销Top
4 楼mousefather(气死猫)回复于 2003-11-04 14:30:18 得分 0
WH_KEYBOARD_LL这个东西不能用啊,msdn 里有,但是我在程序里写,编译不了,是不是这个东西现在不能用了?Top
5 楼ManFred2ManFred(曼弗雷德)回复于 2003-11-04 14:39:09 得分 0
到精华区去看看hook的用法介绍吧。Top
6 楼ifengfeng(fengfeng)回复于 2003-11-11 16:31:39 得分 0
#include <afxwin.h> // MFC core and standard componentsTop
7 楼flinming(flinming)回复于 2003-11-11 17:22:05 得分 0
//拦截窗体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);
}Top
8 楼yintongshun(左岸思雨)回复于 2003-11-11 17:30:17 得分 0
WPARAM wParam, LPARAM lParam这两个参数需要判断一下,如果你想屏蔽的键,就让他失效Top
9 楼carbon107(<软件开发思想.h>)回复于 2003-11-11 17:32:09 得分 0
来晚了大家都说了Top




