Java и SetWindowDisplayAffinity - PullRequest
       17

Java и SetWindowDisplayAffinity

1 голос
/ 18 апреля 2019

Я использую библиотеку jna.extra.User32Extra, и мне нужно изменить значение windowdisplayaffinity. К сожалению, результат всегда ложный, я не знаю почему, и этот код не работает. Я ожидаю, что WDA_MONITOR делает окна черными при печати экрана

public class Browser extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        StackPane pane = new StackPane();
        WebView view = new WebView();

        WebEngine engine = view.getEngine();
        engine.load("https://google.com");
        pane.getChildren().add(view);

        Scene scene = new Scene(pane, 1280, 720);
        stage.setTitle("Browser JAVA");        
        stage.setScene(scene);

        WinDef.HWND hWnd = User32.INSTANCE.FindWindow(null, "");
        boolean output = User32Extra.INSTANCE.SetWindowDisplayAffinity(hWnd, 1); 
        System.out.println("output "+output);//false

        stage.show();
    }

    public static void main(String[] args) throws IOException {
        Application.launch(args);
    }
}

1 Ответ

2 голосов
/ 18 апреля 2019

Возможно, ваше окно не является верхним окном, как следует из документации:

возвращает FALSE, когда, например, вызов функции выполняется в окне не верхнего уровня.https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setwindowdisplayaffinity

Вы должны сделать, как говорит документ:

Чтобы получить расширенную информацию об ошибке, вызовите GetLastError .

...