Hice una pregunta similar en un hilo anterior (https://stackoverflow.com/questions/5206633/java-find-out-what-application-window-is-in-focus) pero me guiaron a usar JNI, y no estoy teniendo mucho éxito con eso ... He leído algunos tutoriales y mientras algunos funcionan bien, otros no Todavía no puedo obtener la información que necesito, que es el título de la ventana en el primer plano.Usando JNA para obtener GetForegroundWindow();
Ahora estoy buscando en JNA pero no puedo entender cómo acceder a GetForegroundWindow() ... I creo que pueda imprimir el texto una vez que consiga el identificador de la ventana usando el código (que se encuentra en otro hilo):?!
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));
}
}
Cualquier sugerencia Gracias
¡Gracias por la respuesta rápida! No puedo compilar ese código, por alguna razón, no puedo importar com.sun.jna.platform.win32.WinDef.HWND; y HWND GetForegroundWindow(); parece ser inválido Naturalmente, me da un error al tratar de llamarlo también. ¿Me podría estar perdiendo algo? –
@Daniel: de nada. ¿Funcionó? –
@Hovercraft Full Of Eels No, envié la respuesta demasiado rápido por accidente. Ahora es la respuesta completa: P –