2015-01-18 2 views
-1

내가 JNA를 사용하여 다음과 같은 코드가 있습니다 :Win32 API를 : User32.INSTANCE.EnumChildWindows는 반환하지 않습니다 아무것도

HWND foregroundWindow = Tools.getForegroundWindow(); 

    User32.INSTANCE.EnumChildWindows(foregroundWindow, new User32.WNDENUMPROC() { 

     @Override 
     public boolean callback(HWND hwnd, Pointer pntr) { 

      char[] textBuffer = new char[512]; 
      char[] textBuffer2 = new char[512]; 
      User32.INSTANCE.GetClassName(hwnd, textBuffer, 512); 
      User32.INSTANCE.GetWindowText(hwnd, textBuffer2, 512); 
      String wText = Native.toString(textBuffer); 
      String wText2 = Native.toString(textBuffer2); 

      System.out.println("className: " + wText + " title: " + wText2); 

      return true; 
     } 

    }, null); 

Win32 API를의 JNA 구현에 대해 잘 알고있는 사람은 목적을 알고 있어야합니다 이 함수는 윈도우의 자식 요소를 반환하는 것입니다.

mozilla firefox.exe를 시작하고 Ctrl + Shift + Delete를 누르면 캐시, 쿠키 및 기록을 지울 수있는 팝업 창이 열립니다. 내가 programatically 제어 할 수 있도록 위의 함수를 창 안의 모든 컨트롤을 반환하지 않도록 DELETE 단추를 찾고 싶습니다.

그래서 내가 뭘 잘못하고 어떻게 해결할 수 있습니까?

10x.

P.

inspec.exe와 같은 도구를 사용하면 하위 구성 요소가 표시됩니다.

+0

'foregroundWindow'에 저장된 윈도우 핸들을 확인해 보았습니까? – IInspectable

+0

Inspect.exe는'EnumChildWindows()'를 사용하지 않을 것입니다; Microsoft의 액세스 가능성 API에는 액세스 가능한 하위 항목을 가져 오는 방법이 있습니다. ** 반드시 창 핸들 **에 매핑되는 것은 아닙니다. 파이어 폭스의 아이들은 실제 윈도우가 아닐 수도있다. 나는 개인적으로 알지 못한다. Spy ++를 사용하여 하위 창 핸들을 찾습니다. – andlabs

답변

1

EnumChildWindows은 창 자식 컨트롤을 열거합니다. Mozilla는 윈도우가 아닌 컨트롤을 사용합니다.

자동화 API를 사용하여이를 자동화 할 필요가 있습니다.

관련 문제