Отключить определенные ключи в jxbrowser - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть веб-приложение на основе Java.Я хочу открыть веб-приложение в режиме киоска, чтобы пользователи, использующие приложение, не могли получить доступ ни к каким другим приложениям на компьютере, например, к любому другому браузеру, проводнику файлов и т. Д. Кроме того, у этого веб-приложения есть экран входа в систему, где пользователь может ввести свое имя пользователя.и пароль.Итак, мне нужно, чтобы пользователи могли вводить данные для входа в систему.

Я подумываю использовать для этого jxbrowser.Здесь, в режиме киоска, Как мне убедиться, что пользователи не могут делать alt + tab, windows + d и т. Д.

Ниже приведен пример кода.

 import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.InputEventsHandler;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;

public class KioskApp {

    public static void main(String[] args) {
        // Create Browser instance
        final Browser browser = new Browser();
        BrowserView view = new BrowserView(browser);

        view.setKeyEventsHandler(new InputEventsHandler<KeyEvent>() {
            public boolean handle(KeyEvent event) {
                boolean b = event.isControlDown() 
                        || event.isAltDown() 
                        || event.getKeyCode() == KeyEvent.VK_TAB 
                        || event.getKeyCode() == KeyEvent.VK_WINDOWS;
                return b ;
            }
        });

        browser.loadURL("http://google.com");

        JFrame frame = new JFrame();
        frame.add(view, BorderLayout.CENTER);
        // Remove window title and borders
        frame.setUndecorated(true);
        // Make frame topmost
        frame.setAlwaysOnTop(true);
        // Disable Alt+F4 on Windows
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        // Make frame full-screen
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        // Display frame
        frame.setVisible(true);
    }

}

Редактировать1:

ок.поэтому я обновил код, как показано выше.Теперь я могу ввести jxbrowser.Но я все еще не могу помешать пользователям делать alt + tab и windows + d

1 Ответ

0 голосов
/ 26 апреля 2018

Клавиши alt + tab и windows + d являются ярлыками системного уровня, которые нельзя отключить с помощью API JxBrowser.

InputEventsHandler<KeyEvent> используется для фильтрации / подавления клавиш и их не отправляетсяк хромированному двигателю.Если вы отключите ключ alt + tab для Chromium, это не означает, что операционная система не получит это событие ключа и не переключит окна.

Если вам нужно отключить такие ключи, я рекомендуюВы используете один из возможных подходов .

...