我自己做个一个钩子DLL然后用EXE调用结果“读取函数地址错误”怎么回事?
FARPROC lpfn;
HINSTANCE hinst;
hinst=AfxLoadLibrary("gouzi.dll");
if(hinst==NULL)
{
AfxMessageBox("载入DLL失败");
return;}
lpfn=GetProcAddress(hinst,"CKeyboardHook");
if(lpfn==NULL)
{
AfxMessageBox("读取函数地址失败");
return;
}
lpfn();
}下面是DLL的头文件
class AFX_EXT_CLASS CKeyboardHook : public CObject
{
public:
CKeyboardHook();//钩子类的构造函数 virtual ~CKeyboardHook();//钩子类的析构函数public:
BOOL StartHook(); //安装钩子函数 BOOL StopHook();//卸载钩子函数
};DEF里面的声明
SECTIONS
mydata READ WRITE SHAREDCCP文件的头部
#pragma data_seg("mydata")
HHOOK glhHook=NULL; //安装的鼠标勾子句柄
HINSTANCE glhInstance=NULL; //DLL实例句柄
#pragma data_seg()请问问题到底出现在什么地方???
FARPROC lpfn;
HINSTANCE hinst;
hinst=AfxLoadLibrary("gouzi.dll");
if(hinst==NULL)
{
AfxMessageBox("载入DLL失败");
return;}
lpfn=GetProcAddress(hinst,"CKeyboardHook");
if(lpfn==NULL)
{
AfxMessageBox("读取函数地址失败");
return;
}
lpfn();
}下面是DLL的头文件
class AFX_EXT_CLASS CKeyboardHook : public CObject
{
public:
CKeyboardHook();//钩子类的构造函数 virtual ~CKeyboardHook();//钩子类的析构函数public:
BOOL StartHook(); //安装钩子函数 BOOL StopHook();//卸载钩子函数
};DEF里面的声明
SECTIONS
mydata READ WRITE SHAREDCCP文件的头部
#pragma data_seg("mydata")
HHOOK glhHook=NULL; //安装的鼠标勾子句柄
HINSTANCE glhInstance=NULL; //DLL实例句柄
#pragma data_seg()请问问题到底出现在什么地方???
解决方案 »
- MFC对话框部份的打不开
- 一百分求C++ 从IStream到buffer的方法
- 关于窗口最大化的问题
- 我将一个ico文件用CFile写入一个dat文件,如何将写入的数据读出并转化为HICON呢?
- DCOM访问问题?
- 菜鸟的问题,请高手们指教指教,路径转换问题,急!!,在线等
- 跟dll 调用约定有关的问题
- jiangsheng我在程序中host住了WebBrowser,但网页中有类似window.close()的脚本....
- 如何改变属性页tab的颜色,以前的贴子好像有,可我进不去。
- 急:如何用ATL创建复合控键,关键是新ATL复合控键如何正确调用被包容控键的接口函数?
- 打开文件我会弄,保存怎么弄呢
- 如何打开,并显示一个Word文档?
根本上说你这种用法是错误的.应该说就不叫钩子,而是主动调用一个API而已.
钩子函数是在注册后由操作系统来调用的,而不是应用程序本身.
建议你先看看MSDN里关于钩子是如何使用的.
抄代码就要付出这个代价,自己写出来的就不会郁闷了.
里面有讲过