var
Form1: TForm1;
implementation
{$R *.dfm}
uses PsAPI; {GetModuleFileNameEx 函数需要它}
{根据窗口句柄获取所在程序路径的函数}
function GetProcessExePath(h: HWND): string;
var
pid: Cardinal;
pHandle: THandle;
buf: array[0..MAX_PATH] of Char;
begin
{先获取进程 ID}
GetWindowThreadProcessId(h, @pid);
{再获取进程句柄}
pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
{获取进程路径}
GetModuleFileNameEx(pHandle, 0, buf, Length(buf));
CloseHandle(pHandle);
Result := buf;
end;
{测试当前程序}
procedure TForm1.Button1Click(Sender: TObject);
var
path: string;
begin
path := GetProcessExePath(Handle);
ShowMessage(path);
end;
{测试记事本 - 需要随便打开一个记事本}
procedure TForm1.Button2Click(Sender: TObject);
var
wh: HWND;
path: string;
begin
wh := FindWindow('Notepad', nil);
path := GetProcessExePath(wh);
ShowMessage(path);
end;
end.
根据窗口句柄获取所在程序路径
最新推荐文章于 2024-09-19 09:46:00 发布