当前位置: 首页 > 技术文档 > 正文

在uses中加入 “ TLHelp32,psapi ”; 调用方法:

在uses中加入 “ TLHelp32,psapi ”;


function FindProcess(AFileName: string;var ID:Cardinal): boolean;
var
   hSnapshot: THandle;//用于获得进程列表
   lppe: TProcessEntry32;//用于查找进程
   Found: Boolean;//用于判断进程遍历是否完成
begin
   Result :=False;
   hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//获得系统进程列表
   lppe.dwSize := SizeOf(TProcessEntry32);//在调用Process32First API之前,需要初始化lppe记录的大小
   Found := Process32First(hSnapshot, lppe);//将进程列表的第一个进程信息读入ppe记录中
   while Found do
   begin
     if ((UpperCase(ExtractFileName(lppe.szExeFile))=UpperCase(AFileName)) or (UpperCase(lppe.szExeFile )=UpperCase(AFileName))) then
     begin
       ID:=lppe.th32ProcessID;

       Result :=True;
     end;
     Found := Process32Next(hSnapshot,lppe);//将进程列表的下一个进程信息读入lppe记录中
   end;

end;

 
function GetProcessPath(ProcessID: DWORD): string;
var
     Hand: THandle;
     ModName: Array[0..Max_Path-1] of Char;
     hMod: HModule;
     n: DWORD;
begin
     Result:='';
     Hand:=OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,ProcessID);
     if Hand>0 then
     try
       ENumProcessModules(Hand,@hMod,Sizeof(hMod),n);
       if GetModuleFileNameEx(Hand,hMod,ModName,Sizeof(ModName))>0 then
         Result:=ExtractFilePath(ModName);
     except
     end;
end;

调用方法:

procedure TForm1.Button1Click(Sender: TObject);
var
  Test:Dword;
  Path:string;
begin
  FindProcess('Test.exe',Test);
  Path:= GetProcessPath(Test);
  ShowMessage(Path);
end;
本文固定链接: https://blog.meyisi.cn/jishu/130.html | 么意思博客
标签:

delphi 进程名获取路径:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter