0

私はある種のオートクリッカーをやろうとしていて、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);
    }
}

そして、同じことが起こります。

あなたは何を間違っていますか?このケースでキープレスが機能しない場合は、何か他のものを見つける必要がありますか?

4

1 に答える 1

0

一部のゲーム入力はイベント ベースの構造を使用しないことを経験から知っています。一部のゲームでは、キーが押されたかどうかをフレームごとに 1 回だけチェックします。これは、その瞬間にキーを押す可能性がゼロであることを意味します。

Logitech キーボード スクリプト ツールなどのスクリプト ユーティリティも同様の問題に直面しており、プレスとリリースの間に遅延を設けることが役立ちます。

余談ですが、チャットウィンドウは通常、入力イベントを使用する必要があります。キーの押下がフレームごとに 1 回しか登録されていない場合、入力はほとんど不可能になるからです。

于 2012-06-12T12:01:19.137 に答える