拦截到了键盘按键消息,如何转换成键盘上的符号?

kfhzy 2014-01-17 02:27:49
拦截到了键盘按键消息,如何转换成键盘上的符号?
做一个扫码枪的接收软件,当扫码枪扫到 星号字符时,发出的是 按下shift 按下8 抬起8 抬起shift,
怎么快速的识别组合键的键盘动作呢?
如果每一个组合键都要编程处理的话,所有字母和数字键消息都要判断是否已经按下其他系统按键,再判断其输出内容
这么做相当麻烦啊,还有什么好办法吗?
...全文
357 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
见习学术士 2014-01-18
  • 打赏
  • 举报
回复
Specifies the virtual-key code of the key that generated the keystroke message. 不包括WM_CHAR?那你试下 WH_GETMESSAGE Installs a hook procedure that monitors messages posted to a message queue. For more information, see the GetMsgProc hook procedure.
kfhzy 2014-01-18
  • 打赏
  • 举报
回复
我hook了 WH_KEYBOARD 但是 按键盘都没反应啊,进不了回调函数?
见习学术士 2014-01-17
  • 打赏
  • 举报
回复
引用 6 楼 kfhzy 的回复:
[quote=引用 4 楼 xiaoc1026 的回复:] [quote=引用 2 楼 kfhzy 的回复:] [quote=引用 1 楼 worldy 的回复:] 处理OnChar事件,不要处理OnKeyDown
我用的全局键盘钩子,好像没有OnChar事件[/quote] 处理WM_CHAR 消息


LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT pKey;

	switch(nCode)
	{
	case HC_ACTION:
		{
			pKey = (PKBDLLHOOKSTRUCT)lParam;//初始化对象

			switch(wParam)
			{
			case WM_CHAR:			
				{
					
				}
			default:
				{
					;
				}
				break;
			}

		}//HC_ACTION

	default:
		{
			//什么都不干
		}
		break;
	}

	return CallNextHookEx(g_hKeyboard,nCode,wParam,lParam);//传给系统继续处理
}
[/quote] 小弟能力有限,我在钩子里边拦截不到 WM_CHAR 这个东东,智能拦截到 WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN WM_SYSKEYUP [/quote] SetWindowsHookEx(WH_KEYBOARD,...);
kfhzy 2014-01-17
  • 打赏
  • 举报
回复
引用 4 楼 xiaoc1026 的回复:
[quote=引用 2 楼 kfhzy 的回复:] [quote=引用 1 楼 worldy 的回复:] 处理OnChar事件,不要处理OnKeyDown
我用的全局键盘钩子,好像没有OnChar事件[/quote] 处理WM_CHAR 消息


LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT pKey;

	switch(nCode)
	{
	case HC_ACTION:
		{
			pKey = (PKBDLLHOOKSTRUCT)lParam;//初始化对象

			switch(wParam)
			{
			case WM_CHAR:			
				{
					
				}
			default:
				{
					;
				}
				break;
			}

		}//HC_ACTION

	default:
		{
			//什么都不干
		}
		break;
	}

	return CallNextHookEx(g_hKeyboard,nCode,wParam,lParam);//传给系统继续处理
}
[/quote] 小弟能力有限,我在钩子里边拦截不到 WM_CHAR 这个东东,智能拦截到 WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN WM_SYSKEYUP
worldy 2014-01-17
  • 打赏
  • 举报
回复
就是WM_CHAR消息
见习学术士 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 kfhzy 的回复:
[quote=引用 1 楼 worldy 的回复:] 处理OnChar事件,不要处理OnKeyDown
我用的全局键盘钩子,好像没有OnChar事件[/quote] 处理WM_CHAR 消息


LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	PKBDLLHOOKSTRUCT pKey;

	switch(nCode)
	{
	case HC_ACTION:
		{
			pKey = (PKBDLLHOOKSTRUCT)lParam;//初始化对象

			switch(wParam)
			{
			case WM_CHAR:			
				{
					
				}
			default:
				{
					;
				}
				break;
			}

		}//HC_ACTION

	default:
		{
			//什么都不干
		}
		break;
	}

	return CallNextHookEx(g_hKeyboard,nCode,wParam,lParam);//传给系统继续处理
}
孤影品茗 2014-01-17
  • 打赏
  • 举报
回复
映射ASCII表?
kfhzy 2014-01-17
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
处理OnChar事件,不要处理OnKeyDown
我用的全局键盘钩子,好像没有OnChar事件
worldy 2014-01-17
  • 打赏
  • 举报
回复
处理OnChar事件,不要处理OnKeyDown
1. 开始 WINDOWS环境 WINDOWS程序设计选项 编写第一个WINDOWS程序 2.Unicode简介 字符集简史 宽字符和WINDOWS 3. 窗口和消息 自己的窗口 WINDOWS程序设计的难点 4. 输出文字 绘制和更新 GDI简介 滚动条 建立更好的滚动 5. 图形基础 GDI的结构 画点和线 绘制填入区域 GDI映像方式 矩形、区域和剪裁 6. 键盘 键盘基础 按键消息 字符消息 键盘消息和字符集 插入符号(不是光标) 7. 鼠标 鼠标基础 显示区域鼠标消息 非显示区域鼠标消息 程序中的命中测试 拦截鼠标 鼠标滑轮 章节目录 壹佰软件开发小组 整理编译 8. 定时器 定时器入门 定时器的使用:三种方法 定时器用于时钟 以定时器进行状态报告 9. 子窗口控件 按钮类别 控件与颜色 静态类别 滚动条类别 编辑类别 清单方块类别 10. 菜单及其它资源 图标、光标、字符串和自订资源 菜单 键盘快捷键 11. 对话框 模态对话框 非模态对话框 通用对话框 12. 剪贴簿 剪贴簿的简单使用 复杂的剪贴簿用法 实作剪贴簿浏览器 图像篇 13. 使用打印机 打印入门 打印图形和文字 14. 位图和Bitblt 位图入门 位图尺寸 位块传输 GDI位图对象 15. 与设备无关的位图 DIB文件格式 目录页码,2/4 mk:@MSITStore:E:\新建文件夹\Windows程序设计\Windows程序设计(CH).chm:... 2006-5-5 显示和打印 DIB和DDB的结合 16. 调色盘管理器 使用调色盘 调色盘动画 调色盘和真实世界图像 DIB处理链接库 17. 文字和字体 简单的文字输出 字体的背景 逻辑字体 字体列举 段落格式 有趣的东西 18. Metafile 旧的 MetaFile 格式 增强型 MetaFile 进阶篇 19. 多重文件界面 MDI概念 MDI的范例程序 20. 多任务和多线程 多任务的各种模式 WINDOWS的多线程处理 线程同步 事件信号 线程区域储存空间(TLS) 21. 动态链接库 动态链接库的基本知识 各式各样的DLL讨论 22. 声音与音乐 WINDOWS和多媒体 波形声音 MIDI和音乐
基础篇 1. 开始 …………………… WINDOWS环境 …………………… WINDOWS程序设计选项 …………………… 编写第一个WINDOWS程序 2.Unicode简介 …………………… 字符集简史 …………………… 宽字符和C …………………… 宽字符和WINDOWS 3. 窗口和消息 …………………… 自己的窗口 …………………… WINDOWS程序设计的难点 4. 输出文字 …………………… 绘制和更新 …………………… GDI简介 …………………… 滚动条 …………………… 建立更好的滚动 5. 图形基础 …………………… GDI的结构 …………………… 设备内容 …………………… 画点和线 …………………… 绘制填入区域 …………………… GDI映像方式 …………………… 矩形、区域和剪裁 6. 键盘 …………………… 键盘基础 …………………… 按键消息 …………………… 字符消息 …………………… 键盘消息和字符集 …………………… 插入符号(不是光标) 7. 鼠标 …………………… 鼠标基础 …………………… 显示区域鼠标消息 …………………… 非显示区域鼠标消息 …………………… 程序中的命中测试 …………………… 拦截鼠标 …………………… 鼠标滑轮 8. 定时器 …………………… 定时器入门 …………………… 定时器的使用:三种方法 …………………… 定时器用于时钟 …………………… 以定时器进行状态报告 9. 子窗口控件 …………………… 按钮类别 …………………… 控件与颜色 …………………… 静态类别 …………………… 滚动条类别 …………………… 编辑类别 …………………… 清单方块类别 10. 菜单及其它资源 …………………… 图标、光标、字符串和自订资源 …………………… 菜单 …………………… 键盘快捷键 11. 对话框 …………………… 模态对话框 …………………… 非模态对话框 …………………… 通用对话框 12. 剪贴簿 …………………… 剪贴簿的简单使用 …………………… 复杂的剪贴簿用法
基础篇 1. 开始 …………………… WINDOWS环境 …………………… WINDOWS程序设计选项 …………………… 编写第一个WINDOWS程序 2.Unicode简介 …………………… 字符集简史 …………………… 宽字符和C …………………… 宽字符和WINDOWS 3. 窗口和消息 …………………… 自己的窗口 …………………… WINDOWS程序设计的难点 4. 输出文字 …………………… 绘制和更新 …………………… GDI简介 …………………… 滚动条 …………………… 建立更好的滚动 5. 图形基础 …………………… GDI的结构 …………………… 设备内容 …………………… 画点和线 …………………… 绘制填入区域 …………………… GDI映像方式 …………………… 矩形、区域和剪裁 6. 键盘 …………………… 键盘基础 …………………… 按键消息 …………………… 字符消息 …………………… 键盘消息和字符集 …………………… 插入符号(不是光标) 7. 鼠标 …………………… 鼠标基础 …………………… 显示区域鼠标消息 …………………… 非显示区域鼠标消息 …………………… 程序中的命中测试 …………………… 拦截鼠标 …………………… 鼠标滑轮 8. 定时器 …………………… 定时器入门 …………………… 定时器的使用:三种方法 …………………… 定时器用于时钟 …………………… 以定时器进行状态报告 9. 子窗口控件 …………………… 按钮类别 …………………… 控件与颜色 …………………… 静态类别 …………………… 滚动条类别 …………………… 编辑类别 …………………… 清单方块类别 10. 菜单及其它资源 …………………… 图标、光标、字符串和自订资源 …………………… 菜单 …………………… 键盘快捷键 11. 对话框 …………………… 模态对话框 …………………… 非模态对话框 …………………… 通用对话框 12. 剪贴簿 …………………… 剪贴簿的简单使用 …………………… 复杂的剪贴簿用法 …………………… 实作剪贴簿浏览器 ………………
1. 开始0. 开始 4 WINDOWS环境 4 WINDOWS程序设计选项 9 编写第一个WINDOWS程序 13 2. Unicode简介 20 字符集简史 21 宽字符和C 27 宽字符和WINDOWS 30 3. 窗口和消息 36 自己的窗口 37 WINDOWS程序设计的难点 57 4. 输出文本 59 绘制和更新 60 GDI简介 63 滚动条 83 建立更好的滚动 92 5. 图形基础 101 GDI的结构 102 设备环境 106 画点和线 121 绘制填入区域 142 GDI映射模式 148 矩形、区域和剪裁 165 6. 键盘 177 键盘基础 178 按键消息 181 字符消息 198 键盘消息和字符集 202 插入符号(不是光标) 226 7. 鼠标 234 鼠标基础 235 客户区鼠标消息 237 非客户区鼠标消息 244 程序中的命中测试 247 拦截鼠标 267 鼠标滑轮 276 8. 计时器 285 计时器入门 286 计时器的使用:三种方法 288 计时器用于时钟 295 以计时器进行状态报告 308 9. 子窗口控件 311 按钮类别 313 控件与颜色 324 静态类别 333 滚动条类别 334 编辑类别 345 列表框类别 349 10. 菜单及其他资源 363 图标、光标、字符串和自订资源 364 菜单 381 键盘加速键 407 11. 对话框 420 模态对话框 420 非模态对话框 451 通用对话框 466 12. 剪贴板 493 剪贴板的简单使用 493 复杂的剪贴板用法 507 实作剪贴板浏览器 512 13. 使用打印机 517 打印入门 518 打印图形和文本 538 14. 位图和Bitblt 557 位图入门 558 位图尺寸 559 位块传输 563 GDI位图对象 575 15. 与设备无关的位图 631 DIB文件格式 632 显示和打印 658 DIB和DDB的结合 699 16. 调色盘管理器 717 使用调色盘 717 调色盘动画 743 调色盘和真实世界图像 761 DIB处理程序库 802 17. 文本和字体 877 简单的文本输出 877 字体的背景 881 逻辑字体 884 字体列举 921 段落格式 931 有趣的东西 955 18. Metafile 967 旧的metafile格式 968 增强型metafile 976 19. 多文档界面 1034 MDI概念 1034 MDI的范例程序 1036 20. 多任务和多线程 1054 多任务的各种模式 1054 WINDOWS的多线程处理 1058 线程同步 1080 事件信号 1081 线程区域储存空间(TLS) 1091 21. 动态链接库 1092 动态链接库的基本知识 1092 各式各样的DLL讨论 1111 22. 声音与音乐 1116 WINDOWS和多媒体 1117 波形声音 1126 MIDI和音乐 1183 23. 领略Internet 1237 Windows Sockets 1237 WININET和FTP 1252
收藏多年的Windows程序设计,不论您使用VC、delphi或是.net,只要是开发Windows下的程序,强烈建议您收藏到自己的硬盘。

【目录】
开始
WINDOWS环境
WINDOWS程序设计选项
编写第一个WINDOWS程序
Unicode简介
字符集简史
宽字符和C
宽字符和WINDOWS
窗口和消息
自己的窗口
WINDOWS程序设计的难点
输出文字
绘制和更新
GDI简介
滚动条
建立更好的滚动
图形基础
GDI的结构
设备内容
画点和线
绘制填入区域
GDI映像方式
矩形、区域和剪裁
键盘
键盘基础
按键消息
字符消息
键盘消息和字符集
插入符号(不是光标)
鼠标
鼠标基础
显示区域鼠标消息
非显示区域鼠标消息
程序中的命中测试
拦截鼠标
鼠标滑轮
定时器
定时器入门
定时器的使用:三种方法
定时器用于时钟
以定时器进行状态报告
子窗口控件
按钮类别
控件与颜色
静态类别
滚动条类别
编辑类别
清单方块类别
菜单及其它资源
图标、光标、字符串和自订资源
菜单
键盘快捷键
对话框
模态对话框
非模态对话框
通用对话框
剪贴簿
剪贴簿的简单使用
复杂的剪贴簿用法
实作剪贴簿浏览器
使用打印机
打印入门
打印图形和文字
位图和Bitblt
位图入门
位图尺寸
位块传输
GDI位图对象
与设备无关的位图
DIB文件格式
显示和打印
DIB和DDB的结合
调色盘管理器
使用调色盘
调色盘动画
调色盘和真实世界图像
DIB处理链接库
文字和字体
简单的文字输出
字体的背景
逻辑字体
字体列举
段落格式
有趣的东西
MetaFile
旧的MetaFile格式
增强型MetaFile
多重文件界面
MDI概念
MDI的范例程序
多任务和多线程
多任务的各种模式
WINDOWS的多线程处理
线程同步
事件信号
线程区域储存空间(TLS)
动态链接库
动态链接库的基本知识
各式各样的DLL讨论
声音与音乐
WINDOWS和多媒体
波形声音
MIDI和音乐
领略Internet
WindowsSockets
WININET和FTP

2,640

社区成员

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

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