mfc 程序(VC) 捕捉工业小键盘消息

程序软件要外接一个工业小键盘,键盘上的键对应是@1,@2,@3,@4请问像这样的键我应该怎么补捉到,我有两个思路:一个自定义消息但这种方法我只会捕捉Ctrl|ALT|SH... 程序软件要外接一个工业小键盘,键盘上的键对应是 @1, @2, @3, @4请问像这样的键我应该怎么补捉到,我有两个思路:一个 自定义消息 但这种方法 我只会捕捉Ctrl | ALT|SHIFT + ?的键盘,也就是只会捕捉2个组合键,三个组合键 如:shift +2+2就不会了, 二个 是用PreTranslateMessage(MSG* pMsg) 我知道有这个函数可以捕捉 ,但是像我遇到的这种消息我不知道怎么捕捉,希望高手帮我解决下这个问题 急急急
还有人知道 吗?
展开
 我来答
百度网友917c7ea
2010-10-21 · TA获得超过374个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:207万
展开全部
用键盘钩子,钩键盘按键消息,钩子的话,捕捉多少个键都行,但是象“清风or朗月”兄说的,你那工业小键盘的键值应该是生产厂商自定义的吧,那你就要联系相关的技术支持把键盘键值说明拿来。
键盘钩子的话用SetWindowHoolEx,第一个为钩子类型,键盘的话就是WH_KEYBOARD_LL,流程的话就是安装钩子,设置钩子消息处理回调函数,然后在回调函数中处理消息。不难的。
/************************************************
*@函数名: MyTaskKeyHookLL
*@函数功能: 键盘钩子回调函数
*@函数参数: nCode, wp, lp
*@入参:
* nCode:钩子代号
* wp:消息,如,按键按下消息,按键弹起消息等
* lp:消息事件的具体结构指针
*@出参:
*
*@返回值:
*
*@备注:
**************************************************/
LRESULT CALLBACK MyTaskKeyHookLL(int nCode, WPARAM wp, LPARAM lp)
{
return 1;
// KBDLLHOOKSTRUCT *pkh = (KBDLLHOOKSTRUCT *) lp;
//
// if (nCode==HC_ACTION)
// {
// BOOL bCtrlKeyDown =GetAsyncKeyState(VK_CONTROL)>>((sizeof(SHORT) * 8) - 1);
// BOOL bShift =GetAsyncKeyState(VK_LSHIFT)>>((sizeof(SHORT) * 8) - 1);
// BOOL bAlt = GetAsyncKeyState(VK_LMENU)>>((sizeof(SHORT) * 8) - 1);
// BOOL bEsc = pkh->vkCode==VK_ESCAPE?TRUE:FALSE;
// BOOL bWin = GetAsyncKeyState(VK_LWIN)>>((sizeof(SHORT) * 8) - 1);
// }
// return CallNextHookEx(g_hHookKbdLL, nCode, wp, lp);
}

/************************************************
*@函数名: MonopolizeHotKey
*@函数功能: 屏蔽热键
*@函数参数: bMonopolize
*@入参:
* bMonopolize:是否屏蔽,TRUE:屏蔽;FALSE:不屏蔽
*@出参:
*
*@返回值:
* TRUE:屏蔽成功;FALSE:屏蔽失败
*@备注:
**************************************************/
BOOL CSysMonoOperation::MonopolizeHotKey(BOOL bMonopolize)
{
if (bMonopolize)
{
if (g_hHookKbdLL == NULL)
{
g_hHookKbdLL = SetWindowsHookEx(WH_KEYBOARD_LL, MyTaskKeyHookLL, (HINSTANCE)AfxGetApp()->m_hInstance, 0);
if (g_hHookKbdLL != NULL)
{
return TRUE;
}
return FALSE;
}
}
else
{
if (g_hHookKbdLL != NULL)
{
UnhookWindowsHookEx(g_hHookKbdLL);
g_hHookKbdLL = NULL;
}
}
return TRUE;
}

上面那个MonopolizeHotKey方法就是安装或者卸载钩子,安装bMonopolize就为TRUE,卸载bMonopolize为FALSE。
清风or朗月
2010-10-20 · TA获得超过1089个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:328万
展开全部
用kebord_event()吧,首先要知道你要捕捉的键的虚拟码值,然后才能使用
你可以查查工业小键盘的说明书或在网上查查,应该可以查到的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式