按键部分工作

时间:2012-06-10 11:21:04

标签: java c++ keypress

我一直在尝试做某种自动转换,并在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;
        }
    }
}

单击键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);
    }
}

同样的事情发生了。

你做错了什么?如果按键不适用于这种情况,我必须找到别的东西吗?

1 个答案:

答案 0 :(得分:0)

我从经验中知道某些游戏输入不使用基于事件的结构。如果按下某个键,某些游戏每帧仅检查一次。这意味着您在该确切时刻按键的几率为零。

诸如罗技键盘脚本工具之类的脚本实用程序面临着类似的问题,并且有助于在按下和释放之间产生延迟。

除此之外:聊天窗口通常必须使用输入事件,因为如果按键仅按帧每次注册一次,则几乎不可能打字。