Java awt.Robot:CTRL + ALT + DEL不会显示所需的屏幕

时间:2013-11-05 05:57:25

标签: java awt awtrobot

我刚刚发现了关于awt.Robot库的内容,我很高兴能够使用它。我以为我会对我的朋友玩一个小恶作剧并且有机器人按下控制器,alt,删除按下锁定电脑按钮但我无法启动程序来调出控制alt删除屏幕。

这是我的代码:

import java.awt.*;
import java.awt.event.KeyEvent;
public class Bot {
public static void main(String[] args)
{
    try {
        Robot bot = new Robot();
        bot.delay(4000);
        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.delay(100);
        bot.keyPress(KeyEvent.VK_ALT);
        bot.delay(100);
        bot.keyPress(KeyEvent.VK_DELETE);
        bot.delay(500);
        bot.keyRelease(KeyEvent.VK_CONTROL);
        bot.keyRelease(KeyEvent.VK_ALT);
        bot.keyRelease(KeyEvent.VK_DELETE);
    } catch (AWTException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public static void pressEnter(Robot bot)
{
    bot.keyPress(KeyEvent.VK_ENTER);
    bot.delay(40);
    bot.keyRelease(KeyEvent.VK_ENTER);
}
}

2 个答案:

答案 0 :(得分:5)

使用模拟键事件,无法在Windows XP 1 (+ patches?)中进行此操作。

来自comment here的旧文章,展示了如何使用进行模拟:

  

出于安全原因,我们无法播放热键消息以模拟CTRL ALT DEL。   要在VISTA上执行此操作,您需要使用默认情况下未提供的特殊库“SASLIB”...

无论如何,如果您直接使用Win32(或任何操作系统)API,您可能有权访问相应的API来执行任务。例如,请参阅LockWorkStation

  

此功能与按Ctrl + Alt + Del并单击“锁定工作站”的结果相同。

有关如何访问本机(Windows)API的信息,请参阅Is there a Java library to access the native Windows API?


1 从操作说明我假设目标是Windows。

答案 1 :(得分:0)

我查了一下如何通过命令行访问 Ctrl + Alt + Del ,遗憾的是,这是不可能的。

但是,可以使用以下代码通过命令行锁定计算机:

try {

    Runtime.getRuntime().exec("rundll32 user32.dll,LockWorkStation");

} catch (IOException ex) {
    Logger.getLogger(TimeFrame.class.getName()).log(Level.SEVERE, null, ex);
}