5

私はつい最近 awt.Robot Library について知り、それを使うことに非常に興奮しています。友達にちょっとしたいたずらをして、ロボットにコントロール、alt、delete を押してコンピューターのロック ボタンを押させようと思ったのですが、プログラムにコントロールの 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);
}
}
4

2 に答える 2

5

これは、シミュレートされた主要なイベントを使用する Windows XP 1 (+ パッチ?) 以降では実行できません。

これがどのようにシミュレートされていたかを示す古い記事のコメントから:

Vista では安全上の理由から、ホットキー メッセージをブロードキャストして CTRL ALT DEL をシミュレートすることはできません。VISTAでこれを行うには、デフォルトで提供されていない特別なライブラリ「SASLIB」を使用する必要があります...

とにかく、Win32 (または任意の OS) API を直接使用する場合は、おそらく適切な API にアクセスしてタスクを実行できます。たとえば、LockWorkStationを参照してください。

この機能は、Ctrl+Alt+Del を押して [ワークステーションのロック] をクリックした場合と同じ結果になります。

ネイティブ Windows API にアクセスするための Java ライブラリはありますか? を参照してください。ネイティブ (Windows) API にアクセスする方法についてのリード。


1操作の説明から、ターゲットは Windows であると想定しています。

于 2013-11-05T06:12:37.237 に答える