Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как узнать путь к программе, если известно её имя?

01.01.2007
unit Unit1;

 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
uses
  TlHelp32;
 
function GetExeFilePath(ExeFileName: String): String;
var
  hSnapshot, hSnapshot2: THandle;
  Proc: TProcessEntry32;
  m: TModuleEntry32;
begin
  Result := '';
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  try
    proc.dwSize := Sizeof(proc);
    if Process32First(hSnapshot, proc) then
    repeat
      if AnsiSameText(proc.szExeFile, ExeFileName) then
      begin
        hSnapshot2 := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,
          proc.th32ProcessID);
        try
          m.dwSize := SizeOf(TModuleEntry32);
          if Module32First(hSnapshot2, m) then
          begin
            Result := m.szExePath;
            Exit;
          end;
        finally
          CloseHandle(hSnapshot2);
        end;
      end;
    until not Process32Next(hSnapshot, proc);
  finally
    CloseHandle(hSnapshot);
  end;
end;
 

Взято из https://forum.sources.ru

Автор: Rouse_, P.O.D.