2016-07-20 23 views
0

私はFPCと私のアプリケーションを使用するゲームを持っています。ゲームは画面の中心にカーソルをロックし、マウスが動いたときにゲーム内でカメラを動かすだけです。画面上の指定された位置にカーソルを移動する必要があります(ゲーム中)。私はSetCursorPosSendInputmouseeventおよび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関数がまだマウスを移動しようとするので、カーソルがまだロックされているからだと思います。私はこれを行う方法はこれ以上ありません。

[編集]問題は、ゲームで生の入力が使用されていることです。生の入力オプションがオンの場合でも、期待どおりに動作するマウス入力を送信するには?

+0

これらの機能がどれも機能しない場合、ゲームは生の入力または他のメカニズムを使用してマウスからデータを読み取る可能性が非常に高いです。なぜあなたはこれをする必要がありますか?あなたはゲームを自動化するためのコードを書こうとしていますか? –

+0

はい、ありがとうございます。プログラムは他のプログラムでも動作するはずですが、私がゲームで動作させることは非常に重要です。それが生の入力を使用している場合 - どのようにして何かを行うには? – g2556

+0

さて、あなたは正しいです。私は「Raw Input」オプションをオフにしなければなりませんでしたが、今のところプログラムは動作しますが、ゲームをプレイするのはちょっと違います。 – g2556

答えて

0

raw入力をシミュレートするには、WinIOのようなカーネルモードライブラリを使用する必要があります。

関連する問題