Java – use JNA to get getforegroundwindow();
•
Java
I once asked a similar question( https://stackoverflow.com/questions/5206633/java-find-out-what-application-window-is-in-focus )But I was guided to use JNI, and I didn't have much success... I have read some tutorials, and some work normally. Others haven't been able to get the information I need. This is the title of the foreground window
Now I'm studying JNA, but I don't know how to access getforeroundwindow()... I think I can print text. Once I get the handle of the window, use this code (found on another thread):
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));
}
}
Any suggestions? thank you!
Solution
How to simply add a method call to match the local GetForegroundWindow to your interface, like this:
import com.sun.jna.*;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.win32.*;
public class JnaTest {
public interface User32 extends StdCallLibrary {
User32 INSTANCE = (User32) Native.loadLibrary("user32",User32.class);
HWND GetForegroundWindow(); // add this
int GetWindowTextA(PointerType hWnd,int nMaxCount);
}
public static void main(String[] args) throws InterruptedException {
byte[] windowText = new byte[512];
PointerType hwnd = User32.INSTANCE.GetForegroundWindow(); // then you can call it!
User32.INSTANCE.GetWindowTextA(hwnd,512);
System.out.println(Native.toString(windowText));
}
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码
