我想用个线程,实现真实的键盘按键(像按键精灵一样,像网游中的傻瓜挂机一样)
; 把如下代码放在某个线程中,这样我的电脑就一直在按键J,做了试验也是这样的,比如
运行程序,再打开个记事本,这就可以看到记事本将自动写J,但是我开一个网游,想自动打怪
,就没效果了,也试了下 拳王97,把短手放在J上,一样没有效果(不自动打拳)。请问怎么在游戏
中也能实现键盘按键。不知道为什么,在记事本中能看到效果,在游戏中就看不到。不是这段代码就
是在后台给我“按”键吗?
try   {   
    Robot   robot   =   new   Robot();   
    robot.keyPress(KeyEvent.VK_J);   
    robot.keyRelease(KeyEvent.VK_J);   
}   catch   (AWTException   e)   {   
}

解决方案 »

  1.   

    我写了个小程序,有兴趣的可以去试试哟,对于记事本等其它有效果,会自动按J,但是对游戏没用了,程序如下:
      
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.KeyEvent;
    import javax.swing.JFrame;
    public class Keytext {
    Thread th_jineng2;
      public Keytext(){
      JFrame jf=new JFrame("asdas");
      jf.getContentPane();
      jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      th_jineng2=new Thread(new Runnable(){//线程每隔一秒按J
    public void run() {
    while(true){
    moni(KeyEvent.VK_J);//参数可以改成你想要的
    try {
    th_jineng2.sleep(1000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }}    
       });
     th_jineng2.start();  
      jf.setSize(200,200);
      jf.setVisible(true);
      }
      void moni(int Key){
      try   {   
        Robot   robot   =   new   Robot();   
        robot.keyPress(Key);   
        robot.keyRelease(Key);   
    }   catch   (AWTException   e)   {   

      }
      public static void main(String arg[]){
      new Keytext();
      }
    }
      

  2.   

    为了反作弊,这些事件都是去最底层获得的,所以用windows事件链可能不行
      

  3.   

    while(true){ 
    moni(KeyEvent.VK_J);//参数可以改成你想要的 些方法为按下和释放某键
    try { 
    th_jineng2.sleep(1000); //按键停顿一秒
    } catch (InterruptedException e) { 
    e.printStackTrace(); 

    }}     
    }); 
    又想了下,问题在这上面这段中的sleep(1000)了;当我不加th_jineng2.sleep(1000);这句时在游戏中有效果,不过是
    不停地按这某键,还有其它方法停顿指定时间吗?用robot.delay(times)一样在游戏中没效果,但在记事本中同样sleep
    一样有效果。