释放DLL的问题(全部分都加上了。。。)(58分)

  • 主题发起人 主题发起人 大狗熊
  • 开始时间 开始时间

大狗熊

Unregistered / Unconfirmed
GUEST, unregistred user!
Program &nbsp;Main;<br><br>uses &nbsp;windows;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>var Msg : tMsg;<br><br>procedure &nbsp;HookOn &nbsp;; stdcall; external 'Hook.dll';<br>procedure &nbsp;HookOff ; stdcall; external 'Hook.dll';<br>begin <br> &nbsp;HookOn;<br> &nbsp;while GetMessage(Msg, 0, 0, 0) do &nbsp;;<br> &nbsp;HookOff;<br>end.<br><br>这是调用DLL的主程序<br><br>DLL中导出表<br>exports &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br> &nbsp;HookOn,HookOff;<br><br>问题是这样的,照这样写,EXE运行时必须需要调用DLL,我的意图是把DLL打入资源,释放DLL后加载它,但是我搞了很多办法,EXE运行时都必须要指定DLL的位置,怎么样能让EXE释放DLL后调用它,而不是EXE运行的时候必须有DLL<br>我用了<br>lib:=LoadLibrary('HOOK.dll');<br>@hookon:= GetProcAddress(lib,'hookon');<br>这样的动态加载没发实现。。。请高手指点。。。。。
 
把它放到释放到system32文件夹试试!
 
释放到系统文件夹就可以了
 
lib:=LoadLibrary('路径/HOOK.dll');<br>??不明白你的意思
 
前二位兄弟的回答不是我问的啊。。。我的意思是要动态加载DLL,就是需要的时候加载,这样编译时就不需要调用DLL,只把DLL打入资源等待释放后调用,我自己再研究下吧。。弟兄们回答的不是我问的
 
还要定义函数指针<br>先loadLibrary得到dll句柄,<br>再用GetProcAddress函数得到函数指针<br>这样就可以使用dll中的函数了<br>注意释放资源
 
测试下看看,昨天我找了一个文章,很详细,估计问题不大
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部