C++ hook 问题

检测键盘,有按键就cout<<“按键了”。应该是怎么个流程??要不要自己写个DLL?然后用程序加载或注入?我知道用什么函数,但是返回的句柄老是0。... 检测键盘,有按键就cout<<“按键了”。
应该是怎么个流程??
要不要自己写个DLL?然后用程序加载或注入?
我知道用什么函数,但是返回的句柄老是0。
展开
 我来答
镭毅
2011-12-04 · TA获得超过1394个赞
知道大有可为答主
回答量:1155
采纳率:0%
帮助的人:1092万
展开全部
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
// function declaration.
LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam );
int main()

{
// Retrieve the applications instance
HINSTANCE appInstance = GetModuleHandle(NULL);
// Set a global Windows Hook to capture keystrokes.
SetWindowsHookEx( WH_KEYBOARD_LL, LowLevelKeyboardProc, appInstance, 0 );
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0)

{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return 0;
}
LRESULT CALLBACK LowLevelKeyboardProc( int nCode, WPARAM wParam, LPARAM lParam )

{
// Declare our pointer to the KBDLLHOOKSTRUCT
KBDLLHOOKSTRUCT *pKeyBoard = (KBDLLHOOKSTRUCT *)lParam;
switch( wParam )

{
case WM_KEYUP: // When the key has been pressed and released

{
switch( pKeyBoard->vkCode ) // Check to see what key has been pushed

{
case VK_RETURN: // The return/enter key has been pressed
DWORD timestamp = pKeyBoard->time; // This shows our timestamp when the key was pushed.
printf("Enter Key Pressed %u", timestamp ); // Show us when the key has been pushed
break;
}
}
default:
return CallNextHookEx( NULL, nCode, wParam, lParam );
}
return 0;
}
hanyang945
2011-12-04 · TA获得超过464个赞
知道小有建树答主
回答量:585
采纳率:0%
帮助的人:445万
展开全部
如果是Hook全局的而不是某个特定的进程则需要将Hook过程编写为一个DLL,以便让任何程序都可以加载它来获取Hook过程函数。至于你说的返回的句柄是0,我记得hook键盘按键的钩子获取到的值是存在wParam里面的。返回值当然不会有结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式