如何取得当前Dll的路径?

graycarl 2002-12-06 03:06:48
在ISAPI扩展中如何办到?
...全文
63 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
graycarl 2002-12-06
  • 打赏
  • 举报
回复
谢谢
invalid 2002-12-06
  • 打赏
  • 举报
回复
调用这个函数……
那么如何在Dll里面取到自己的Handle?

参考一下c++版本的。
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
if(lpReserved)
OutputDebugString("DLL_PROCESS_ATTACH Static load");
else
OutputDebugString("DLL_PROCESS_ATTACH Dynamic load");
GetModuleFileName(hinst,dllpath,255);
break;
case DLL_PROCESS_DETACH:
if(lpReserved)
OutputDebugString("DLL_PROCESS_DETACH Call process termination!");
else
OutputDebugString("DLL_PROCESS_DETACH FreeLibrary");
break;
case DLL_THREAD_ATTACH:
OutputDebugString("DLL_THREAD_ATTACH");
break;
case DLL_THREAD_DETACH:
OutputDebugString("DLL_THREAD_DETACH");
break;
default:
OutputDebugString("DllEntryPoint");
}
return 1;
}
graycarl 2002-12-06
  • 打赏
  • 举报
回复
但是我所说的是在ISAPI扩展Dll中取得自己的路径
而不是取得其它的Dll路径

就是说,这个Dll是等待人调用的 它自己如何取得Dll的路径?
用Null做参数传入取得的是dllhost.exe路径

另外 mrwyf(流星飞) 的方法取到的也是dllhost.exe路径

麻烦几位再替我想想办法 谢谢了
tommy_linux 2002-12-06
  • 打赏
  • 举报
回复
var hDll:THandle;
  Test1:function:integer;
begin
  hDll:=LoadLibrary('mydll.dll');
  if hDll<32 then exit;//如果Dll无法加载则跳出
  @Test1:=GetProcAddress(hDll,MakeIntResource(1));
    //取得mydll中的第一个函数的地址。
  ...
  FreeLibrary(hDll);
end;
流星飞520 2002-12-06
  • 打赏
  • 举报
回复
可以用如下函数:
sDllPath :=ExtractFilePath(ParamStr(0));
graycarl 2002-12-06
  • 打赏
  • 举报
回复
调用这个函数……
那么如何在Dll里面取到自己的Handle?
tommy_linux 2002-12-06
  • 打赏
  • 举报
回复


用GetModuleFileName函数。



1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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