2013-12-23 30 views
2

我使用Java的「Robot」類編寫了以下「Processing」腳本,並且它在Windows和Mac上運行得非常好。但是,如果我打開一個應用程序,就像遊戲一樣,點擊不起作用!我試過的遊戲是「戰地4」。這裏是鼠標點擊代碼;在其他應用程序中發送關鍵幀

import processing.serial.*; 
import java.awt.AWTException; 
import java.awt.Robot; 
import java.awt.event.InputEvent; 

Serial myPort; 
String val; 
Robot mouseBot; 

void setup(){ 
    String portName=Serial.list()[0]; 
    myPort = new Serial(this, portName, 9600); 
    try { 
    mouseBot = new Robot(); 
    } 
    catch(AWTException e) { 
    e.printStackTrace(); 
    } 
} 

void draw() { 
    if(myPort.available()>0) 
    { 
     if(myPort.read()==1) 
     { 
      mouseBot.mousePress(InputEvent.BUTTON1_MASK); 
      mouseBot.mouseRelease(InputEvent.BUTTON1_MASK); 
     } 
    } 
} 

正如我前面提到的,我可以在本地Windows或本地OSX中點擊,並且它的工作原理非常好。但在遊戲中,點擊不會註冊。是否有另一種方式發送鼠標命令,以便可以在其他應用程序中識別它?謝謝!

Carpetfizz

+1

大多數遊戲要麼天真地阻止這種行爲,或者它不執行足夠低的遊戲識別它的操作系統API – MadProgrammer

+0

非常感謝,我只是在另一個遊戲(Arma III)嘗試它,它運行良好。你介意發佈這個答案,以便我可以接受嗎?謝謝! – Carpetfizz

回答

1

很多遊戲現在天要檢測這些類型的事件的能力。例如BF爲一名員工朋克員。

它可能是一個機器人根本不產生系統事件給操作系統的API中足夠低,以允許這些事件在遊戲中認識

相關問題