1

フルスクリーン モードで開き、いくつかの質問とそのオプションを DB からレンダリングする Java デスクトップ アプリケーションを開発したいと考えています。

DBからデータを取得してラベルに表示することは、私にとって大きな課題ではありません...

しかし、アプリケーションが開かれると、ユーザーが (Alt+Tab) などのアプリケーション トラバーサル キーを使用してアプリケーションを切り替えるように制限したいと考えています。

コーディング中にjFrame.setAlwaysOnTop(true);これを使用すると、アプリケーションは常にトップに保持されますが、デスクトップに切り替えると; アプリケーションが最小化され、他のアプリケーションにアクセスできるようになります。

また、windows + D alos などのキーも制限したい、つまり、アプリケーションを閉じないと、ユーザーは他のオプションを選択できなくなります。

アプリケーションが Linux/Unix で実行されている場合、プラットフォームの手段とは無関係に、このすべての制限を適用したいと考えています。

提案や解決策はありますか?

4

2 に答える 2

2

簡単に言えば、できません

マシンの管理者である場合は、マシンをキオスクモードに設定できます。Windows 8.1 では、これがより簡単になっています。

ただし、キオスク モードは、サード パーティのアプリで制御できるものではありません。これは、コンピューターのユーザー (精通している必要があります) が制御するものです。

于 2013-10-23T06:27:22.527 に答える
1

以下のコードで Alt+Tab を無効化/ブロックできます。ただし、ユーザーがマウスでデスクトップに切り替えるのを止めることはできません...

  public class AltTabStopper implements Runnable
{
     private boolean working = true;
     private JFrame frame;

     public AltTabStopper(JFrame frame)
     {
          this.frame = frame;
     }

     public void stop()
     {
          working = false;
     }

     public static AltTabStopper create(JFrame frame)
     {
         AltTabStopper stopper = new AltTabStopper(frame);
         new Thread(stopper, "Alt-Tab Stopper").start();
         return stopper;
     }

     public void run()
     {
         try
         {
             Robot robot = new Robot();
             while (working)
             {
                  robot.keyRelease(KeyEvent.VK_ALT);
                  robot.keyRelease(KeyEvent.VK_TAB);
                  frame.requestFocus();
                  try { Thread.sleep(10); } catch(Exception) {}
             }
         } catch (Exception e) { e.printStackTrace(); System.exit(-1); }
     }
}
于 2013-10-23T06:37:27.943 に答える