Получение активной информации о окне в Java


Answers

Этот код работает с JNA 4.0

import com.sun.jna.Native;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.RECT;

// see http://java-native-access.github.io/jna/4.0/javadoc/

public class EnumerateWindows {
    private static final int MAX_TITLE_LENGTH = 1024;

    public static void main(String[] args) throws Exception {
        char[] buffer = new char[MAX_TITLE_LENGTH * 2];
        HWND hwnd = User32.INSTANCE.GetForegroundWindow();
        User32.INSTANCE.GetWindowText(hwnd, buffer, MAX_TITLE_LENGTH);
        System.out.println("Active window title: " + Native.toString(buffer));
        RECT rect = new RECT();
        User32.INSTANCE.GetWindowRect(hwnd, rect);
        System.out.println("rect = " + rect);
    }
 }
Question

Я пытаюсь обновить мое приложение на Java, чтобы работать, только если активное окно с определенным именем. Я узнал, что это возможно с помощью JNI, но я понятия не имею, как именно это сделать. Я просто не мог найти описания или примера, которые могли бы объяснить это. Мой вопрос: как получить имя процесса активного окна в Windows (через JNI или что-нибудь еще - я принимаю любое другое решение)?






Links



Tags

java java   jni   jna