FindWindow 3

[Pascal] 외부 프로그램을 실행하고, 실행한 프로램의 메인 윈도우 핸들 얻기

개요 외부 프로그램을 실행하고, 실행한 프로그램의 메인 윈도우 핸들을 얻는 방법을 설명합니다. 구현 방법 외부 프로그램을 실행하기 위하여 CreateProcess() 함수를 이용합니다. 외부 프로그램이 정상적으로 실행된다면 해당 프로그램의 Process ID를 얻을 수 있고, Process ID를 이용하여 메인 윈도우 핸들을 구할 수 있습니다. 먼저 CreateProcess() 함수를 이용하여 다음과 같이 메모장을 실행할 수 있습니다. uses Windows; procedure TForm1.btnExecuteNotepadClick(Sender: TObject); var // StdInPipeR, StdInPipeW : THandle; // StdOutPipeR, StdOutPipeW : THandle; ..

[pascal] FindWindow / FindWindowEx

FindWindow 윈도우 핸들 (HWND)을 구하기 위하여 FindWindow() 함수를 많이 이용하게 되는데, 이 함수의 원형은 다음과 같습니다. function FindWindow(lpClassName, lpWindowName: PChar): HWND; stdcall; 주로 다음과 같은 형식으로 FindWindow() 함수를 이용합니다. uses Windows; var hwnd: THandle; begin // 윈도우 이름으로 메모장 핸들 찾기 hwnd := FindWindow(nil, '제목 없음 - Window 메모장'); // 클래스 이름으로 메모장 핸들 찾기 hwnd := FindWindow('Notepad', nil); // 여러 개의 메모장에서 특정 윈도우 이름의 메모장 찾기 hwnd :..

프로세스ID(ProcessID)로 윈도우 핸들(HWND) 구하기

서론 CreateProcess로 새로운 프로세스를 만든 이후에, 만들어진 프로세스의 메인 윈도우 핸들을 얻기 위한 방법을 알아 보겠습니다. 특정 클래스의 윈도우 핸들을 얻기 위해서 FindWindow를 사용하는데, 개발자가 임의로 CreateProcess를 통하여 실행시킨 프로세스의 메인 윈도우 핸들을 얻는 방법은 다음 GetHwndFromProcessID 함수를 이용하면 됩니다. 설명 아래 GetHwndFromProcessID 함수의 코드입니다. function GetHwndFromProcessID(dwProcessID: DWORD): THandle; var hWnd: THandle; dwProcessID2: DWORD; begin hWnd := FindWindow(nil, nil); // 최상위 윈도..

728x90