API函数编程,如何获取例如键盘字母消息?

例如像A,B,C…………的虚拟键或消息?其他的HOME,F1_F12……不用.还有如果我获得了按钮消息那如何用sendmessage函数,将其发送到WM_的消息上,并能让... 例如像A,B,C…………的虚拟键或消息? 其他的HOME,F1_F12……不用.
还有 如果我获得了按钮消息 那如何 用sendmessage函数,将其发送到WM_的消息上,并能让WM_消息 知道 发送的是那个字母?
我用的是VC6.0
展开
 我来答
百度网友74e2505d9e8
推荐于2018-05-09 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1965
采纳率:92%
帮助的人:154万
展开全部
利用动态链接库做个钩子程序来截获按键输入,并把有关的输入用sendmessage发送到对应的窗体里。
低级键盘钩子很方便可以捕获用户的键盘输入,最主要是你不用写dll,把以下代码放在对话框程序里面就可以了。
/*
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define _WIN32_WINNT 0x0500 //在 stdafx.h中添加这一句
*/
/****************************************************************************
低级键盘钩子
****************************************************************************/
HHOOK LowLevelKeyboardHook=NULL; //钩子句柄
//低级键盘钩子
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{ if (nCode<0 ) return CallNextHookEx(LowLevelKeyboardHook,nCode,wParam,lParam);
if (wParam==WM_KEYDOWN)
{ int code=((KBDLLHOOKSTRUCT *) lParam )->vkCode;
if ( code == 'A' )
{ //把code 放在 WPARAM 参数里
::SendMessage(m_hWnd,WM_MY_MSG,(WPARAM)code,NULL);
return 1; }
}
return CallNextHookEx(LowLevelKeyboardHook,nCode,wParam,lParam); //传递钩子信息 }
void CDemoDlg::OnButton1()
{ //start Low Level Keyboard hook
LowLevelKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),0);
ASSERT(LowLevelKeyboardHook);}
void CDemoDlg::OnButton2()
{ //stop Low Level Keyboard hook
VERIFY(UnhookWindowsHookEx(LowLevelKeyboardHook));}
qiujiejia
推荐于2017-12-16 · TA获得超过500个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:250万
展开全部
低级键盘钩子很方便可以捕获用户的键盘输入,最主要是你不用写dll,把以下代码放在对话框程序里面就可以了。

/*
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define _WIN32_WINNT 0x0500 //在 stdafx.h中添加这一句

*/

/****************************************************************************
低级键盘钩子
****************************************************************************/
HHOOK LowLevelKeyboardHook=NULL; //钩子句柄

//低级键盘钩子
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
if (nCode<0 ) return CallNextHookEx(LowLevelKeyboardHook,nCode,wParam,lParam);

if (wParam==WM_KEYDOWN)
{
int code=((KBDLLHOOKSTRUCT *) lParam )->vkCode;
if ( code == 'A' )
{
//把code 放在 WPARAM 参数里
::SendMessage(m_hWnd,WM_MY_MSG,(WPARAM)code,NULL);
return 1;
}
}

return CallNextHookEx(LowLevelKeyboardHook,nCode,wParam,lParam); //传递钩子信息
}

void CDemoDlg::OnButton1()
{
//start Low Level Keyboard hook
LowLevelKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),0);
ASSERT(LowLevelKeyboardHook);

}

void CDemoDlg::OnButton2()
{
//stop Low Level Keyboard hook
VERIFY(UnhookWindowsHookEx(LowLevelKeyboardHook));
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lhmhbmsy
2010-10-19 · TA获得超过145个赞
知道小有建树答主
回答量:335
采纳率:100%
帮助的人:202万
展开全部
利用动态链接库做个钩子程序来截获按键输入,并把有关的输入用sendmessage发送到对应的窗体里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
粗鲁的女汉子
2010-10-24 · TA获得超过1442个赞
知道小有建树答主
回答量:627
采纳率:0%
帮助的人:511万
展开全部
HOOK肯定是可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友60bc2ce
2010-10-19
知道答主
回答量:64
采纳率:100%
帮助的人:16.8万
展开全部
主要使用钩子
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式