能力值:
( LV11,RANK:180 )
|
-
-
2 楼
你要什么反应啊
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
应该勾到键盘消息 然后键盘响应不了啊 结果键盘依然能用。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
return 0;
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
*********************************DLL:::
#define _WIN32_WINNT 0x0500
#include<windows.h>
#include"DllMain.h"
#pragma data_seg (".shareddata")
HHOOK g_hook=NULL; //安装的鼠标勾子句柄
HINSTANCE glhInstance=NULL; //DLL实例句柄
#pragma data_seg()
#pragma comment(linker,"/section:.shareddata,RWS")
BOOL APIENTRY DllMain(HMODULE hMoudle,DWORD msg,LPVOID lpReserved)
{
switch(msg)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
}
glhInstance=hMoudle;
return true;
}
void __declspec(dllexport) WINAPI InstallHook()
{
g_hook=SetWindowsHookEx(WH_KEYBOARD_LL,GetMsgProc,glhInstance,0);
}
LRESULT CALLBACK GetMsgProc(int code,WPARAM wParam,LPARAM lParam)
{
//Sleep(1000);
//return CallNextHookEx(hHook,code,wParam,lParam); 这俩句式注释掉了么?
return TRUE;
}
******************************EXE:
#include<windows.h>
#include<stdio.h>
#pragma comment(lib, "TestHookDll.lib")
void WINAPI InstallHook();//这个是在DLL中的吧!!
int main()
{
InstallHook();//调用DLL中的函数,LoadLibrary()获得DLL句柄,然后GetProcAddress得到挂钩函数地址。定义个函数指针,然后调用挂钩函数。
int c;
scanf("%i",c);
这是不得加个消息循环啊?
while(GetMessage(&msg,0,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
你试试改了看下,行不行!
|
能力值:
( LV10,RANK:175 )
|
-
-
6 楼
return > 0 就对了,没错
除非你的 TRUE 被定义成了 -1 ?
还有可以把 SetWindowsHookEx 函数 HOOK 的类型换一下,试试WH_KEYBOARD
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
还是不行!!!
另外我遇到一个问题:
我显示调用Dll,能得到dll句柄,但得不到函数地址。
HMODULE hMod= LoadLibrary("TestHookDll.dll");
if(hMod==NULL)printf("%i\n",0);
FARPROC pfn=GetProcAddress(hMod,"InstallHook");
if(pfn==NULL)printf("%i\n",1);
而且我让DLL输出“InstallHook”,调用GetProcAddress(hMod,"InstallHook"); 不行
但是在如果让DLL按“?InstallHook@***”的方式输出符号的话,调用GetProcAddress(hMod,"?InstallHook**")就行了(而且还是没有钩子效果),这是怎么回事啊?
小弟曾用汇编写HookDLL能正常工作,现在却遇到了好多问题。。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我是新手。我是路过的。。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
终于好了 感谢大家代码是没有大问题的,但是我在拷贝dll过程中将一个旧版本的靠近了debug目录,之后的新版本拷在了工程目录,结果一直得不出结果,粗心大意害死人
|
|
|