代码如下!新手,这个东西如何用?高手指教,谢谢!
function ProgramPath: string;
begin
   SetLength(Result, 255);
   GetModuleFileName(HInstance, PChar(Result), Length(Result));
   Application.MessageBox(PChar(Result),PChar('11'),MB_OK);
   Result:= PChar(Result);
end;

解决方案 »

  1.   

      说明
      获取一个已装载模板的完整路径名称
      返回值
      Long,如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。会设置GetLastError
      参数表
      参数 类型及说明
      hModule Long,一个模块的句柄。可以是一个DLL模块,或者是一个应用程序的实例句柄。如果该参数为NULL,
      该函数返回该应用程序全路径。
      lpFileName String,指定一个字串缓冲区,要在其中容纳文件的用NULL字符中止的路径名,hModule模块就是从这个文件装载进来的
      nSize Long,装载到缓冲区lpFileName的最大字符数量网上一搜就有了
      

  2.   

    GetModuleFileName的第二个参数,不要用Result转化后传,自行声明一个PChar变量,并分配内存。
    比如var
      p: PChar;
    const
      Size: Integer = 255;
    begin
      Result := '';
      GetMem(p, Size);
      try
        GetModuleFileName(HInstance, p, Size); 
        Result := P;
      finally
        FreeMem(p);
      end;  
    end;
      

  3.   

    取得完整路径,参考
    http://blog.csdn.net/bdmh/archive/2011/01/30/6169949.aspx
      

  4.   

    你的Hinstance...是不是Application的? Application自动就有一个ExeName还是ExeFile属性, 直接获取全路径或者是程序名称的.