使用java限制应用程序切换
我想开发一个以全屏模式打开的JAVA桌面应用程序,并从DB中呈现一些问题及其选项 从数据库中获取数据并在标签上显示对我来说并不是什么大挑战 但当应用程序打开时,我想限制用户使用应用程序遍历键(如(Alt+Tab)等)在应用程序之间切换 在编码过程中,我使用了使用java限制应用程序切换,java,desktop-application,Java,Desktop Application,我想开发一个以全屏模式打开的JAVA桌面应用程序,并从DB中呈现一些问题及其选项 从数据库中获取数据并在标签上显示对我来说并不是什么大挑战 但当应用程序打开时,我想限制用户使用应用程序遍历键(如(Alt+Tab)等)在应用程序之间切换 在编码过程中,我使用了jFrame.setAlwaysOnTop(true)这会使应用程序始终处于顶部,但当我切换到桌面时;我的应用程序最小化,我可以访问其他应用程序 另外,像windows+D alos这样的键需要限制,或者换句话说,在不关闭应用程序的情况下,用
jFrame.setAlwaysOnTop(true)代码>这会使应用程序始终处于顶部,但当我切换到桌面时;我的应用程序最小化,我可以访问其他应用程序
另外,像windows+D alos这样的键需要限制,或者换句话说,在不关闭应用程序的情况下,用户将无法选择任何其他选项
我想应用所有这些独立于平台的限制,这意味着如果我的应用程序运行在Linux/Unix上,那么也会有相同的行为
有什么建议或解决办法吗?简单地说,你不能
如果您是机器的管理员,您可以将其配置为kiosk模式。在Windows8.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); }
}
}
谢谢“黑暗”和“威尔”我的一个建议;按照操作系统在main()
中的意思进行编码,首先使用System.getProperty(“os.name”)
找到操作系统,然后根据操作系统,一些类将出现在那里,比如windowsliminations
,如果windows操作系统在那里,然后按照你建议的阻止Alt+Tab键,在Timer
上杀死explorer.exe,这样可以吗?