先把代码贴上来import java.awt.Robot;
import java.awt.event.KeyEvent;public class KeyPressTest { public static void main(String[] args) {
Robot robot = null;
try {
//Thread.sleep(5000);//5秒 
robot = new Robot();
int i = 0;
//robot.keyPress(KeyEvent.VK_D);
Thread.sleep(4000);//4秒 
//System.out.println();

while(i++ < 10000)
{
//robot.keyPress(0x27);
//robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_RIGHT);
//robot.keyRelease(KeyEvent.VK_RIGHT);

}
//robot.keyRelease(KeyEvent.VK_D);
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("ok"); }
}
}代码很简单,运行后4秒,就按一个向右的键,直接运行可以看到鼠标光标向右移动,但是对于游戏就没反应 不知道为什么?
哪位大侠能给点提示?

解决方案 »

  1.   

    按一个键的过程不是按下然后放开吗,这是一个连贯的动作
    r.keyPress(KeyEvent.VK_RIGHT);
    r.keyRelease(KeyEvent.VK_RIGHT);
      

  2.   

    r.keyPress(KeyEvent.VK_RIGHT);
    r.keyRelease(KeyEvent.VK_RIGHT);
    而且你要选中游戏的窗口
      

  3.   

    过来拿你这20分了!看清楚答案~~~~你这个问题不在程序,而在于你对键盘输入的理解,你把键盘输入的过程搞清楚就会写程序了。我们平常按键盘,键盘是有反应时间的,这个你懂不?一般的键盘每2.64ms扫描一次键盘,若有按键按下时,则扫描8次时间后键入指令生效 , 所以按下键到指令生效最长的时间为(2.64MSx8)+8US=22MS。但是你也别拿这个22ms去写程序,没用的,不同的游戏对于你键盘录入有不同的时间定义,说这个你明白吗?再给你一组数据:所以你程序没问题,只要在while里面的r.keyPress(KeyEvent.VK_RIGHT); 后面加上Thread.sleep(***);你的程序就能用啦,具体延时是多少你自己试验吧~~~~~~~~ps:我拿 魔兽世界 试验过了,500ms能用的,很正常,不加 延时 是不能用的,只有20分啊,半夜给你试验这个 oh mygod……
      

  4.   


    我在雷电这样的小游戏里测试的,设为250ms和500ms还是不行  20分太少了 我提高到100分了 帮我解决了 给你了
      

  5.   

    可以先下载按键精灵试试,如果按键精灵在游戏里能用,用java也没问题,反之则不行。