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