윈도우 핸들(HWND)로 실행파일 이름(프로세스명) 알아내기.

 

1. 윈도우 핸들로 프로세스ID를 얻는다.

2. 프로세스를 다 뒤지면서 얻어낸 프로세스ID와 일치하는 프로세스를 찾는다.

3. 찾아내면 해당 프로세스의 szExeName 이 실행파일 이름.

 

uses 에 TlHelp32 추가해야 함.

 

 

 

function GetExeNameFromHWND(aHWND: HWND): String;
var
  dwProcID: DWORD;
  hSnapshot: HWND;
  Proc32: PROCESSENTRY32;
begin
  Result:='';

 

  // 1. 윈도우 핸들로 프로세스ID 가져오기
  GetWindowThreadProcessID(aHWND, dwProcID);

 

  // 2. 시스템의 프로세스 스냅샷 가져오기
  hSnapshot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if hSnapshot=INVALID_HANDLE_VALUE then begin
    OutputDebugString('[Error] - CreateToolhelp32Snapshot returns INVALID_HANDLE_VALUE');
    Exit;
  end;

 

  // 3. 첫번째 엔트리부터 뒤지기 시작
  Proc32.dwSize:=SizeOf(PROCESSENTRY32);
  if Process32First(hSnapshot, Proc32)=FALSE then begin
    OutputDebugString('[Error] Process32First returns FALSE');
    Exit;
  end;

 

  // 4. 프로세스ID가 일치하면 실행파일명 반환
  repeat
    if dwProcID=Proc32.th32ProcessID then begin
      Result:=Trim(Proc32.szExeFile);
      Exit;
    end;
  until not Process32Next(hSnapshot, Proc32);
end;








Posted by bloodguy
,