이전 질문 (https://stackoverflow.com/questions/5206633/java-find-out-what-application-window-is-in-focus))에서 비슷한 질문을했지만 JNI를 사용하도록 안내 받았으며 많은 성공을 거두지 못했습니다 ... 일부 자습서를 읽었으며 일부는 잘되고 다른 일부는 그렇지 않습니다. 여전히 필요한 정보를 얻을 수 없습니다. 이것은 전경에있는 윈도우의 제목입니다.JNA를 사용하여 GetForegroundWindow()를 가져 오는 중입니다.
이제 JNA를 살펴 보았지만 GetForegroundWindow()에 액세스하는 방법을 알 수 없습니다. 이 코드를 사용하여 윈도우에 대한 핸들을 일단 내가 (다른 스레드에 있음)의 텍스트를 인쇄 할 수 있습니다 생각?!
import com.sun.jna.*;
import com.sun.jna.win32.*;
public class jnatest {
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
int GetWindowTextA(PointerType hWnd, byte[] lpString, int nMaxCount);
}
public static void main(){
byte[] windowText = new byte[512];
PointerType hwnd = //GetForegroundWindow() (?)...
User32.INSTANCE.GetWindowTextA(hwnd, windowText, 512);
System.out.println(Native.toString(windowText));
}
}
어떤 제안을 감사
빠른 답장을 보내 주셔서 감사합니다! 어떤 이유로 코드를 컴파일 할 수 없으며 com.sun.jna.platform.win32.WinDef.HWND를 가져올 수 없습니다. 및 HWND GetForegroundWindow(); 무효 인 것 같습니다. 자연적으로, 나는 또한 그것을 부르려고 노력하는 데 오류가있다. 내가 뭔가를 놓칠 수 있을까요? –
@ 대니얼 : 천만에요. 작동 했나요? –
@ Hovercraft Eels의 전체 아니요, 저는 우연히 응답을 너무 빨리 제출했습니다. 이제 완전한 대답입니다 : P –