delphi6做网页ISAPI的.dll,当前目录却是C:\WINDOWS\SYSTEM32

BCBPLC 2011-09-05 01:40:10
在程序中显示当前目录 GetCurrentDirectory() 得到的却是c:\windows\system32.
现在当前目录要设成 .dll所在的目录怎么弄?
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BCBPLC 2011-10-27
  • 打赏
  • 举报
回复
我用 GetModuleFileName(HInstance, ModName, SizeOf(ModName)); // 取得当前项目的路径
得到的串是这样r :
\\?\D:\TOLEDO4\ISAPI\test.dll
前导符 \\?\不知是什么意思?是故意的呢,还是bug ?
BCBPLC 2011-10-27
  • 打赏
  • 举报
回复
我试试 GetModuleFileName(HInstance, ModName, SizeOf(ModName)); // 取得当前项目的路径
haitao 2011-10-26
  • 打赏
  • 举报
回复
对于dll,extractfilepath(application.exename)是调用者exe的路径
GetModuleFileName是对的
我的isapi读ini都是这么做的
funxu 2011-10-26
  • 打赏
  • 举报
回复
你的.dll放在哪里了?
function GetCurrPath(IsAutoGetDll: boolean = true): string;
var
ModName: array[0..MAX_PATH] of Char;
begin
if ModuleIsLib and IsAutoGetDll then begin
GetModuleFileName(HInstance, ModName, SizeOf(ModName)); // 取得当前项目的路径
Result := ExtractFilePath(ModName);
end
else
Result := ExtractFilePath(ParamStr(0));
end;

function GetModuleFileName(Module: HMODULE; Buffer: PChar; BufLen: Integer): Integer;

Module模块的句柄模块,其文件名是必需的。

Buffer是一个缓冲区,它接收文件的名称。

BufLen是在缓冲区的字节数。

GetModuleFileName返回写入缓冲区的字节数。

警告:GetModuleFileName并不总是成功的。在应用程序调用方式,在/ proc文件系统的存在,以及其他因素的不同,有些时候可能会返回GetModuleFileName一个不完全合格的名称,或在某些情况下,没有在所有的文件名。请务必在使用前要检查这个返回值函数的结果。


另外用extractfilepath(application.exename)自己拼目录也可以的

BCBPLC 2011-10-26
  • 打赏
  • 举报
回复
GetModuleFileName()的入参怎么办呢?
BCBPLC 2011-10-05
  • 打赏
  • 举报
回复
用上面取的DLL所在目录却是\\?\Test
前面的\\?\做什么用的
林石公 2011-09-05
  • 打赏
  • 举报
回复
试一下API:
GetModuleFileName
BCBPLC 2011-09-05
  • 打赏
  • 举报
回复
现在当前目录要设成 .dll所在的目录怎么弄? 这个目录是不定的。

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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