私はFPCと私のアプリケーションを使用するゲームを持っています。ゲームは画面の中心にカーソルをロックし、マウスが動いたときにゲーム内でカメラを動かすだけです。画面上の指定された位置にカーソルを移動する必要があります(ゲーム中)。私はSetCursorPos
、SendInput
、mouseevent
およびCursor.Position
を試しましたが、これらのどれもが何もしませんでした。これだけのコード(私はどこかでそれを見つけたが、私は再びそれを見つけることができません;))マウスを移動しますが、間違った位置決幅に(ゲームがトップにあった場合は、他の機能は何もしなかった):他のアプリケーションの指定された位置にカーソルを移動
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
private const int MOUSEEVENTF_MOVE = 0x0001;
public static void MoveTo(float x, float y)
{
float min = 0;
float max = UInt16.MaxValue;
int mappedX = (int)Remap(x, 0.0f, Screen.PrimaryScreen.Bounds.Width, min, max);
int mappedY = (int)Remap(y, 0.0f, Screen.PrimaryScreen.Bounds.Height, min, max);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, mappedX, mappedY, 0, 0);
}
public static float Remap(float value, float from1, float to1, float from2, float to2)
{
return (value - from1)/(to1 - from1) * (to2 - from2) + from2;
}
I関数がまだマウスを移動しようとするので、カーソルがまだロックされているからだと思います。私はこれを行う方法はこれ以上ありません。
[編集]問題は、ゲームで生の入力が使用されていることです。生の入力オプションがオンの場合でも、期待どおりに動作するマウス入力を送信するには?
これらの機能がどれも機能しない場合、ゲームは生の入力または他のメカニズムを使用してマウスからデータを読み取る可能性が非常に高いです。なぜあなたはこれをする必要がありますか?あなたはゲームを自動化するためのコードを書こうとしていますか? –
はい、ありがとうございます。プログラムは他のプログラムでも動作するはずですが、私がゲームで動作させることは非常に重要です。それが生の入力を使用している場合 - どのようにして何かを行うには? – g2556
さて、あなたは正しいです。私は「Raw Input」オプションをオフにしなければなりませんでしたが、今のところプログラムは動作しますが、ゲームをプレイするのはちょっと違います。 – g2556