delphi 通过进程名获得进程文件全路径的函数

减小字体 增大字体 作者:佚名  来源:转载  发布时间:2011-02-17 10:40:17

uses

  TlHelp32, psapi;

function GetPathFileofModule(ModuleName: String): String; // 枚举进程文件所在路径
var
  hProcSnap: THandle;
  pProcess: THandle;
  pe32: TProcessEntry32;
  buf: array [0 .. MAX_PATH] of char;
  hMod: HMODULE;
  cbNeeded: DWORD;
begin
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPALL, 0);
  if hProcSnap = INVALID_HANDLE_VALUE then
    Exit;
  pe32.dwSize := SizeOf(ProcessEntry32);
  if Process32First(hProcSnap, pe32) = True then
    while Process32Next(hProcSnap, pe32) = True do
    begin
      if uppercase(pe32.szExeFile) = uppercase(ModuleName) then
      begin
        pProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
          FALSE, pe32.th32ProcessID);
        if pProcess <> 0 then
        begin
          if EnumProcessModules(pProcess, @hMod, SizeOf(hMod), cbNeeded) then
          begin
            ZeroMemory(@buf, MAX_PATH + 1);
            GetModuleFileNameEx(pProcess, hMod, buf, MAX_PATH + 1);
            Result := strpas(buf);
          end;
        end;
      end;
    end;
  CloseHandle(hProcSnap);
end;

调用方法 :

ShowMessage(GetPathFileofModule('explorer.exe'));

来源:http://topic.csdn.net/u/20110214/21/9d81f8ba-2aa8-44a9-9e69-b20bf37c8953.html

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B