2011-03-24 3 views
0

프로그램의 창 요소에 액세스하려고합니다.이 프로그램에는 바이너리와 설치된 항목 만 있습니다.C/C++ 프로그램의 창 요소에 액세스하기위한 후크

예를 들어 특정 목록 상자의 특정 항목을 자동화 된 방식으로 클릭하고 싶습니다.

프로그램 창의 한 목록 상자에만 액세스하는 데 관심이 있습니다. 그러나이 방법은 아주 좋은 매크로를 만드는 데 도움이됩니다. 목록 상자는 "확장"으로 길고 동적입니다.

매크로를 Autohotkey와 같이 사용하려고 생각했지만 신속하게 나쁜 생각으로 간주했습니다.

나는 이것을 어떻게 호출해야할지 모르지만, 성공하지 않고 "후크"관련 자료를 검색하려고했습니다.

추신 : 저는 64 비트 Windows 7 시스템에서 코드 블록을 사용하고 있습니다. 내가 VS를 사용할 수 있기 때문에 VS와 같은 더 나은 IDE가 있는지 알려 주시기 바랍니다.

편집

좋아

, 내가 정말 무엇을 해야할지 모르겠어요하지만 나는 WinSpy ++를 사용하여 윈도우의 정보를 붙 잡았다. 자식 창 핸들을 얻으려고하는데 실패하고 있습니다.
나는 이것에 아주 멍청하다. 나는 중요한 세부 사항을 생각 나게했다. 목록 요소와 그 위치 (1, 2, 3)의 이름을 가져야한다. 지금까지 나는 곳
확인 (내가)

EDIT 2는 여기에 있습니다 : 내가 메인 윈도우 핸들을 잡았지만, 아이들의의 핸들을 얻을 수 없습니다. 내 인터넷 검색, "GetDlgItem"기능을 설정했지만 작동하지 않았다. 어떤 아이디어?

답변

2

Spy ++를 사용하여 창의 특정 클래스 및/또는 캡션 (목록 상자 컨트롤)을 찾은 다음 FindWindow()를 통해 대상을 지정할 수 있습니다.

그렇지 않은 경우 앱의 기본 창을 찾아 자녀를 탐색하여 목록 상자 창을 찾을 때까지 자녀의 하위 항목을 찾아야합니다.

마침내 창 ​​핸들을 사용하면 WM_CLICK 메시지를 PostMessage()로 보낼 수 있습니다.

+0

목록 상자 항목에 액세스 할 수 있습니까? 나는 그들의 이름과 위치를 가져오고 싶습니다. –

+0

그 카운트를 얻기 위해 LB_GETCOUNT를 보낸 다음 각 항목의 데이터/텍스트를 얻기 위해 for (i = 0; i

+0

좋아, 여기까지 내가 지금까지있다 : 나는 메인 윈도우 핸들을 잡았으나 어떤 아이도 핸들을 얻을 수 없다. 내 인터넷 검색, "GetDlgItem"기능을 설정했지만 작동하지 않았다. 어떤 생각? –

1

훅은 원하는 것입니다.

먼저 후크 콜백 함수은 DLL에 있어야하므로 Window가 다른 프로그램의 프로세스 공간에 코드를 삽입 할 수 있습니다.

둘째, SetWindowsHookEx() API를 사용하여 마우스 이동/클릭 이벤트와 같은 일부 이벤트에 후크를 등록해야합니다.

그러면 목록 상자에 완전히 액세스 할 수 있습니다.

팁 : MS Spy ++이라는 작은 도구를 사용하여 목록 상자의 ID 또는 이름을 가져올 수 있습니다.

+0

그런 목록 상자 요소에 액세스 할 수 있습니까? 그들의 이름과 직책을 얻으십시오 (1, 2, 3). 덧붙여서, 나는 당신이 말한 정보를 얻기 위해 WinSpy ++를 사용했습니다. 이제 당신의 팁에 대한 정보를 찾으려고합니다. 나는이 주제에 관해서 총체적입니다. –

+0

@WoF_Angel 예. 그것이 Spy ++가 작동하는 방식입니다. – iCoder

관련 문제