2012-05-03 2 views
1


"HWND"창으로 핸들을 변환 할 수 있는지 궁금합니다. "FindWindow"메서드를 사용하여 "PostMessage"함수를 호출해야합니다.C++ HWND로 처리 하시겠습니까?

나는 현재

+5

아니요. 프로세스 핸들과 창 핸들에 대한 두 가지 데이터 유형 ('HANDLE'과'HWND')이있는 이유가 있습니다. 프로세스가 하나 이상의 창을 가질 수 있다는 것은 말할 것도없이 일대일 대응은 분명하지 않습니다. 당신은 실제로 무엇을하려고합니까? –

+0

"월드 오브 워크래프트"봇 제작을 위해 "사용하기 쉬운"API를 만들려고합니다. 찾으려는 창 HWND는 주 창의 HWND입니다. 나는 내가 그것을 발견 할 수 있는지 모른다 : S 그러나. 커다란 문제는 아니며 C++에서 자신을 교육하는 것입니다. – dotTutorials

답변

2

mainProcess 핸들을 사용하여 ProcessID를 가져 오는 GetProcessId()를 호출하십시오.

전화 EnumWindows() 각 창

, GetWindowThreadProcessId()는 윈도우와 관련된 프로세스의 프로세스 ID를 얻기 위해 호출합니다.

ProcessID가 일치하면 원하는 HWND를 찾았습니다.

이것은 다소 비용이 많이 드는 작업이므로 hwnd를 찾으려면 선행을하고 그냥 저장해야합니다.

+1

경고 : 이전에 언급했듯이 프로세스에는 여러 개의 창이있을 수 있으므로 원하는 창인지 확인하기 위해 창 (클래스 이름, 캡션 등)에 대한 추가 검사가 필요할 수 있습니다. – MessyHack

+0

두 분 모두에게 감사 드리며,이 문제를 극복하기위한 아이디어를 얻었습니다.]. – dotTutorials

4

번에 여러 창을 만들 수있는 과정을 조달해야한다. 1 대 1 매핑이 없으므로 그러한 함수는 이해가되지 않습니다.

한편, 프로세스에 의해 생성 된 창 목록을 반환하는 함수가있을 수 있습니다.

관련 문제