2011년 3월 15일 화요일

윈도우 핸들로 실행파일 이름 알아내기

윈도우 핸들(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_VALUEthen 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;

댓글 없음:

댓글 쓰기