VC/MFC如何实现后台捕捉键盘消息?

如题,我是新手,用做了个MFC对话框,OnPaint()函数里加了ShowWindow(SW_HIDE);,怎样在后台捕捉键盘消息?麻烦说详细点,最好把代码写出来…谢谢H... 如题,我是新手,用做了个MFC对话框,OnPaint()函数里加了ShowWindow(SW_HIDE);,怎样在后台捕捉键盘消息?麻烦说详细点,最好把代码写出来…谢谢
HookProc函数的wparam是键盘消息吗?如何捕捉?我是新手,麻烦你了
展开
 我来答
夺魂狼剑
2010-02-02 · TA获得超过1273个赞
知道小有建树答主
回答量:796
采纳率:0%
帮助的人:797万
展开全部
// 用全局键盘钩子。要写一个DLL库。代码如下:

#include <windows.h>

#pragma data_seg("HookData")
HHOOK g_hHook = NULL;
HINSTANCE g_hInstDLL = NULL;
#pragma data_seg()

#pragma comment(linker,"/SECTION:HookData,RWS")

BOOL APIENTRY DllMain(HINSTANCE hInstDLL
DWORD fdwReason,
LPVOID lpvReserved)
{
g_hInstDLL = hInstDLL;
return TRUE;
}

// 回调函数
LRESULT WINAPI HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
// 请在这里添加消息处理代码

// 将事件传递到下一个钩子
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}

// 安装钩子
extern "C" __declspec(dllexport) VOID InstallHook()
{
g_hHook = SetWindowsHookEx(WH_KEYBOARD, HookProc, _hInstDLL, 0);
}

// 卸载钩子
extern "C" __declspec(dllexport) DWORD KillHook(void)
{
UnhookWindowsHookEx(g_hHook);
}

/* Copyrights (C) 2010 夺魂狼剑. All rights reserved. */

可以在程序中使用LoadLibrary()函数来动态加载这个DLL库,并用GetProcAddress()来找到DLL中的导出函数。

希望能对你有所帮助。
--------------------------------------------------------------------------------------------
HookProc是回调函数,每当捕获到键盘消息,就被自动调用,消息参数wParam是对应的虚拟键代码,可以把它强制转换为ASCII字符,lParam可以判断Ctrl、Alt、Shift等控制键。

每当键盘被按下,就会产生一个WM_KEYDOWN消息,如果被按下的是字母键,还会产生WM_CHAR消息。释放键盘,会产生WM_KEYUP消息。你可以根据实际需要进行捕获。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式