본문 바로가기

프로그래밍/Delphi

프로세스 아이디(ProcessID)로 윈도우 핸들(Handle) 얻기

윈도우 프로세스를 알고 있을 경우에 윈도우 핸들을 얻는 방법
function GetHandleByPID(target_pid: longword): THandle;
var
  test_hwnd: longword;
  test_pid: longword;
  test_thread_id: longword;
begin
  Result := 0;
  test_hwnd := FindWindow(nil, nil);
  while test_hwnd <> 0 do
  begin
    if GetParent(test_hwnd) = 0 then
    begin
      test_thread_id := GetWindowThreadProcessId(test_hwnd, test_pid);
      if test_pid = target_pid then
      begin
        Result := test_hwnd;
        exit;
      end;

    end;
    test_hwnd := GetWindow(test_hwnd, GW_HWNDNEXT);
  end;
end;