2013-12-23 2 views
2

Я написал следующий скрипт «Обработка» с использованием класса «Робот» Java, и он отлично работает на Windows и Mac. Однако, если я открываю приложение, например, игру, клики не работают! Игра, которую я пробовал, была Battlefield 4. Вот код щелчка мыши;Отправить keystokes в других приложениях

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

Большинство игр либо наивности блокировать этот вид поведения или это не выполняется достаточно низко в OS API для игры, чтобы распознать его. – MadProgrammer

+0

Спасибо большое, я просто попробовал это в другой игре (Arma III), и все получилось отлично. Не возражаете ли вы опубликовать это как ответ, чтобы я мог принять его? Благодаря! – Carpetfizz

ответ

1

Многие игры теперь дни есть возможность обнаружения такого рода событий. Например, BF для одного сотрудника punk buster.

Ее возможно, что робот просто не создает системные события достаточно низкие в API данной ОС, чтобы эти события должны быть признаны в игре

Смежные вопросы