Delphi GetModuleFileName函数的用法(可以获取项目的路径,桌面的路径,我的文档的路径)

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

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

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

BufLen是在缓冲区的字节数。

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

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


{当前项目的路径}
  function GetCurrPath(IsAutoGetDll: boolean = true): string;
  {当前项目的全部的路径(包括exe)}
  function GetCurrDllpath: string;
  {获取桌面}
  function GetDeskeptPath: string;
  {获取我的文档}
  function GetMyDoumentpath: string;

{-------------------------------------------------------------------------------
  过程名:    GetCurrPath
  作者:      张志峰
  日期:      2010.11.23
  参数:      无
  返回值:    String
  说明:      获取当前项目的路径
-------------------------------------------------------------------------------}

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;
{-------------------------------------------------------------------------------
  过程名:    GetCurrDllpath
  作者:      张志峰
  日期:      2010.11.23
  参数:      无
  返回值:    String
  说明:      获取当前项目的路径包括exe
-------------------------------------------------------------------------------}

function GetCurrDllpath: string;
var
  p: pchar;
begin
  getmem(p, 255);
  try
    getmodulefilename(hinstance, p, 255);
    result := trim(strpas(p));
  finally
    freemem(p, 255);
  end;
end;

function GetShellFolders(strDir: string): string;
const
  regPath = '\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders';
var
  Reg: TRegistry;
  strFolders: string;
begin
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey(regPath, false) then begin
      strFolders := Reg.ReadString(strDir);
    end;
  finally
    Reg.Free;
  end;
  result := strFolders;
end;

{获取桌面}

function GetDeskeptPath: string;
begin
  Result := GetShellFolders('Desktop'); //是取得桌面文件夹的路径
end;

{获取我的文档}

function GetMyDoumentpath: string;
begin
  Result := GetShellFolders('Personal'); //我的文档
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值