Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按键部分工作_Java_C++_Keypress - Fatal编程技术网

Java 按键部分工作

Java 按键部分工作,java,c++,keypress,Java,C++,Keypress,我一直在尝试使用某种类型的autoclicker,并用java编写了以下代码: import java.awt.event.*; import java.awt.*; class keyStroke { public void Execute() throws AWTException { int n = 0; while(n < 100){ Robot r = new Robot(); r.dela

我一直在尝试使用某种类型的autoclicker,并用java编写了以下代码:

import java.awt.event.*;
import java.awt.*;

class keyStroke {
    public void Execute() throws AWTException {
        int n = 0;
        while(n < 100){
            Robot r = new Robot();
            r.delay(1000);
            r.keyPress(KeyEvent.VK_1);
            r.keyRelease(KeyEvent.VK_1);
            ++n;
        }
    }
}
导入java.awt.event.*;
导入java.awt.*;
类击键{
public void Execute()引发AWTException{
int n=0;
而(n<100){
机器人r=新机器人();
r、 延迟(1000);
r、 按键(KeyEvent.VK_1);
r、 密钥释放(KeyEvent.VK_1);
++n;
}
}
}
它可以很好的点击1键,但是在一些游戏中不起作用

它看起来只在聊天盒上工作并访问聊天盒(输入键),但除此之外,其他功能都不起作用(比如使用技能或移动)

然后,我决定也尝试C++,下面的代码

#include <iostream>
#include <windows.h>
#include <cstdlib>
using namespace std;

void SendKey (char Vk){
    char VkKey = VkKeyScan(Vk);
    keybd_event(VkKey, 0, 0, 0); 
    keybd_event(VkKey, 0, KEYEVENTF_KEYUP, 0);
}

int main(){
    while(true){
        SendKey('1');
        Sleep(1000);
    }
}
#包括
#包括
#包括
使用名称空间std;
void SendKey(char Vk){
char VkKey=VkKeyScan(Vk);
keybd_事件(VkKey,0,0,0);
keybd_事件(VkKey,0,KEYEVENTF_,0);
}
int main(){
while(true){
SendKey('1');
睡眠(1000);
}
}
同样的事情也发生了


你做错了什么?如果按键在这种情况下不起作用,我必须找到其他东西?

根据经验,我知道一些游戏输入不使用基于事件的结构。有些游戏在每帧按下一个键时只检查一次。这意味着您在该确切时刻按下该键的机会为零

脚本实用程序(如logitech键盘脚本工具)也面临类似的问题,因此在按下和释放之间有一个延迟会有所帮助


旁白:聊天窗口通常必须使用输入事件,因为如果每帧只注册一次按键,则几乎不可能进行键入。

也许这些游戏不使用标准的按键事件,而是使用另一种方式来获取键盘输入?同意@stijn。另外,如果在按键和释放之间放置一个小的延迟会怎么样。OTOH,为了一些完全独特的东西,你可以一直诚实地玩这个游戏。仅供参考,你正在Java版本中创建100个Robot类实例。