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

Как, зная Handle окна программы, определить имя exe?

01.01.2007
Мыш

function ExeNameByHandle(aWinHandle:HWND):string;
{исправлено для ©Drkb v.3(2007): www.drkb.ru}

// Для начала определяешь какому процессу принадлежит окно:
var pProcID: ^DWORD;
begin
  GetMem(pProcID, SizeOf(DWORD));
  GetWindowThreadProcessId(aWinHandle, pProcID);
  result:=GetExeNameByProcID(pProcID^);
  FreeMem(pProcID);
end;
// а после этого используешь TProcessEntry32 примерно так:
function GetExeNameByProcID(ProcID: DWord): string;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  Result := '';
  while (Integer(ContinueLoop) <> 0) and (Result = '') do
  begin
    if FProcessEntry32.th32ProcessID = ProcID then
      Result := FProcessEntry32.szExeFile;
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

// Не забудь в uses добавить Tlhelp32
Previous page:
Примеры для обмена данными через File Mapping
Top:
DRKB
Next page:
Как по PID процесса узнать CmdLine, то есть командную строку?