钩子建立失败,SetWindowsHookEx总是返回值0!!

dsgreutrjgfjfgjfg 2014-03-25 09:52:49
我是照着例子模仿做的,目的是注入记事本, F10呼出,键盘钩子。

程序没有提示任何错误或者警告, 但是就是卡在SetWindowsHookEx不动了,加上printf才输出错误值0,太奇怪了,大伙帮帮忙吧,谢谢了!

Dll Def部分:Output.def
LIBRARY "Dll_Functions"
EXPORTS
SetHook

Dll部分:Dll_Functions.dll.cpp

#include <windows.h>
#include <winuser.h>
#include <tchar.h>
#include <stdio.h>

#pragma data_seg("MySec")
HHOOK G_KeyHook = NULL;
HWND G_hWnd;
#pragma data_seg()

LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam); //不加这句提示keyboardproc未声明

DWORD G_ThreadID = 0;
HANDLE G_hUIThread;

HHOOK SetHook(HWND hwnd, DWORD ThreadID)
{
G_hWnd = hwnd;
if(G_ThreadID != ThreadID)
{
G_KeyHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, GetModuleHandle(TEXT("Dll_Functions.dll")), ThreadID);
printf("SetHook return : %ld\n",GetLastError()); //程序始终卡在这里,返回值输出为0!!!
if(G_KeyHook == 0)
{
printf("Hook attached error!\n %ld",GetLastError());
}
else
{
G_ThreadID = ThreadID;
return G_KeyHook;
}
}
else
{
printf("Hook had already been attached before!");
return 0;
}
return 0;
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(VK_F10 == wParam && ((DWORD)lParam & 0x40000000))
{
printf("F10 pressed, hook_KeyboardProc\n");
}
return CallNextHookEx(G_KeyHook, nCode, wParam, lParam);
}


测试部分:

头文件:TestExcute.h

#pragma comment(lib,"..\\Debug\\Dll_Functions.lib")
_declspec(dllimport) HHOOK SetHook(HWND hWnd,DWORD ThreadID);


执行:HookExecute.cpp

#include<windows.h>
#include <tchar.h> //UNICODE SUPPORT
#include <stdio.h>
#include"TestExcute.h"

void main()
{
HHOOK ExcuteHook;
HWND hwnd = ::FindWindow(TEXT("notepad"),NULL);
if( hwnd == NULL)
{
printf ("Not Run\n");
return;
}
DWORD ProcessID = 0;
DWORD ThreadID = GetWindowThreadProcessId(hwnd,&ProcessID);
ExcuteHook = SetHook(hwnd, ThreadID);
}

...全文
229 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsgreutrjgfjfgjfg 2014-03-25
  • 打赏
  • 举报
回复
补充! Win7 32位系统, VS2008!!!
dsgreutrjgfjfgjfg 2014-03-25
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
是否有杀毒软件阻止了
是有报毒,不过我自动放行了 然后刚才试了把杀毒软件全关了之后还是返回0 , 郁闷。。
oyljerry 2014-03-25
  • 打赏
  • 举报
回复
是否有杀毒软件阻止了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧