不是程序自身的绝对路径。有没有高人指点一下?unction   GetProcessFullFileName(pID:Integer):String;
  var   s:String;
          hProcess:THandle;
  begin
          Result:='';
          SetLength(s,256);
          hProcess:=OpenProcess(PROCESS_ALL_ACCESS   or   PROCESS_QUERY_INFORMATION   ,FALSE,pID);
          if(hProcess>0)   then
          begin
                if(GetModuleFileNameEx(hProcess,0,PChar(s),255)>0)   then
                begin
                      Result:=s;
                end;
                CloseHandle(hProcess);
          end;
  end;function  GetAppName1(hwindow:  HWND):  string;
  var
      h  :  HMODULE;
  begin
      SetLength(Result,  100);
      h:=GetClassLong(hwindow,GCL_HMODULE);
      GetModuleFileName(h,PChar(Result),length(Result));
  end;用这个只能得到程序的文件名,还不能达到要求。望高手能指点一二。

解决方案 »

  1.   

    function GetPath(hWnd:HWND):string;
    var hProcessID, hProcess: THandle;
        hMod: HMODULE;
        Size: DWORD;
        Buf: array[0..255] of char;
    begin
      GetWindowThreadProcessId(hWnd, @hProcessID);
      hProcess:= OpenProcess(PROCESS_ALL_ACCESS, False, hProcessID);
      EnumProcessModules(hProcess, @hMod, SizeOf(hMod), Size);
      GetModuleFileNameEx(hProcess, hMod, Buf, SizeOf(Buf));
      CloseHandle(hProcess);
      Result:= StrPas(Buf);
    end;
      

  2.   

    OK,多谢楼上的朋友相助。初上CSDN就遇贵人