使用Java锁定屏幕

时间:2011-07-19 08:52:25

标签: java locking fullscreen

基本上我只需要创建一个应用程序(具有一定的用户访问权限),第一个屏幕是一个全屏窗口,无法在不输入有效用户名和密码的情况下最小化或关闭。像Windows屏幕保护程序的东西。可以吗?我应该研究哪些图书馆?这就是我所需要的,如果我的问题不完整或不清楚,请随意提问!

2 个答案:

答案 0 :(得分:10)

有一次,我用Java写了一些东西,你不能逃脱。真的不可能。它适用于Windows。你走了:

import java.awt.Robot;
import javax.swing.JFrame;


public class WindowsSecurity implements Runnable 
{
  private JFrame frame;
  private boolean running;

  public WindowsSecurity(JFrame yourFrame)
  {
    this.frame = yourFrame;
    new Thread(this).start();
  }

  public void stop()
  {
     this.running = false;
  }

  public void run() {
    try {
      this.terminal.getParentFrame().setAlwaysOnTop(true);
      this.terminal.getParentFrame().setDefaultCloseOperation(0);
      kill("explorer.exe"); // Kill explorer
      Robot robot = new Robot();
      int i = 0;
      while (running) {
         sleep(30L);
         focus();
         releaseKeys(robot);
         sleep(15L);
         focus();
         if (i++ % 10 == 0) {
             kill("taskmgr.exe");
         }
         focus();
         releaseKeys(robot);
      }
      Runtime.getRuntime().exec("explorer.exe"); // Restart explorer
    } catch (Exception e) {

    }
  }

  private void releaseKeys(Robot robot) {
    robot.keyRelease(17);
    robot.keyRelease(18);
    robot.keyRelease(127);
    robot.keyRelease(524);
    robot.keyRelease(9);
  }

  private void sleep(long millis) {
    try {
      Thread.sleep(millis);
    } catch (Exception e) {

    }
  }

  private void kill(String string) {
    try {
      Runtime.getRuntime().exec("taskkill /F /IM " + string).waitFor();
    } catch (Exception e) {
    }
  }

  private void focus() {
    this.frame.grabFocus();
    this.frame.requestFocus();
  }
}

此代码的背景:我写了一些假终端,我可以让它出现我想要的一切。例如,愚蠢的Windows消息如:“未找到键盘,按任意键继续”。我用它作为学校的笑话。启动此应用程序并离开房间,它将在一分钟后自动注销Windows帐户。但我没想到会有一位老师使用 Ctrl - Alt - Del 来杀死我的应用程序。他在我的个人文件中留下了一条信息,其中他写下了他的所作所为,并以“我殴打你,哈哈,我是邪恶的”来结束他的信息。所以,我想和他竞争。然后写了这段代码。他在学校尝试了五次以逃避应用程序,但他不能(我不能这样做:D)。当然他可以关掉机器或退出。但目标是访问我的个人文件。

答案 1 :(得分:0)

在任何一半体面的操作系统中,操作系统将负责为每个进程分配一个区域或窗口。

您需要检查每个操作系统的方法,并使用JNI在本机代码(可能是C或C ++)中实现它。