Используйте Java для блокировки экрана - PullRequest
4 голосов
/ 19 июля 2011

По сути, мне просто нужно создать приложение (с видом доступа пользователя), первый экран которого является полноэкранным окном, которое нельзя свернуть или закрыть без ввода правильного имени пользователя и пароля. Что-то вроде заставки Windows. Это можно сделать? Какие библиотеки я должен посмотреть? Это все, что мне нужно, если мой вопрос неполный или неясный, не стесняйтесь спрашивать!

Ответы [ 2 ]

10 голосов
/ 19 июля 2011

Однажды я написал что-то на 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). Конечно, он мог выключить машину или выйти из системы. Но целью было получить доступ к моим личным документам.

0 голосов
/ 19 июля 2011

В любой полуприличной ОС ОС будет отвечать за присвоение области или окна каждому процессу.

Вам нужно будет проверить каждый метод ОС для этого и реализовать его в собственном коде (вероятно, C или C ++) с использованием JNI.

...