// 用全局键盘钩子。要写一个DLL库。代码如下:
#include <windowsh>
#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消息。你可以根据实际需要进行捕获。
turboc 开发的是dos实模式下的应用程序
而vc开发环境不能开发dos实模式下的程序,所以不能调用bioskey函数,bioskey是通过调用软中断来读取键盘的。
vc只能开发 控制台应用程序,虽然运起来很像dos程序 而实际上不是的,这种程序不能在真正的dos底下运行。
以上就是关于VC/MFC如何实现后台捕捉键盘消息全部的内容,包括:VC/MFC如何实现后台捕捉键盘消息、turbo C下的bioskey读取键盘键值函数在VC开发环境下如何用C语言实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)