내가 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와 같은 도구를 사용하면 하위 구성 요소가 표시됩니다.
'foregroundWindow'에 저장된 윈도우 핸들을 확인해 보았습니까? – IInspectable
Inspect.exe는'EnumChildWindows()'를 사용하지 않을 것입니다; Microsoft의 액세스 가능성 API에는 액세스 가능한 하위 항목을 가져 오는 방법이 있습니다. ** 반드시 창 핸들 **에 매핑되는 것은 아닙니다. 파이어 폭스의 아이들은 실제 윈도우가 아닐 수도있다. 나는 개인적으로 알지 못한다. Spy ++를 사용하여 하위 창 핸들을 찾습니다. – andlabs