2017-03-10 13 views
0

最近、私はMMO-Game(Florensiaと呼ばれています)用のボットを作成しようとしました。 ゲームのいくつかのポジションをクリックする必要があります。 私の問題はカーソルを位置に設定するだけですが、クリックがうまくいかないことです。デスクトップや他のプログラムで試してみると、正しくクリックされます。 もちろんゲームはウィンドウモードです。私はすでにMouseupとMousedownの間で遅延を設定しようとしました。 また、クリックが機能しない前にゲームをフォアグラウンドウィンドウに設定する。C#ゲームでのマウスクリックのシミュレーションが正しく行われない

答えをお待ちしております。 :)

+0

質問を編集し、使用しているコードを追加して、問題の正確な場所を示してください。 –

+0

私は以下の答えのコードを使用しました。 (まだ動作しません)。 – luck2y

答えて

0

この例のようにWinApi関数を使用してみてください。

[DllImport("user32.dll")] 
static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); 
[DllImport("user32.dll")] 
static extern bool SetForegroundWindow(IntPtr hWnd); 

static void Main(string[] args) 
{ 
    const int WM_LBUTTONDOWN = 0x0201; 
    const int WM_LBUTTONUP = 0x0202; 
    const int MK_LBUTTON = 0x0001; 

    uint x = 100; 
    uint y = 100; 

    IntPtr handle = new IntPtr(0x00090996); //Your window handle 
    SetForegroundWindow(handle); 
    Thread.Sleep(300); 
    SendMessage(handle, WM_LBUTTONDOWN, new IntPtr(MK_LBUTTON), new IntPtr(y << 16 | x)); 
    Thread.Sleep(300); 
    SendMessage(handle, WM_LBUTTONUP, new IntPtr(0), new IntPtr(y << 16 | x)); 
} 
+0

私はそれを試しました。それはすべてのウィンドウで再び動作しますが、私はそれをテストしましたが、ゲームではテストしませんでした。あなたは、問題が何であるかについて何らかのアイデアや示唆を持っていますか? – luck2y

+0

SendMessageの代わりにPostMessageを呼び出してみてください。たぶんあなたは間違ったウィンドウハンドルを使用し、クリックしたい領域はいくつかの子ウィンドウの内側にありますか?それは私が想像できるすべてです。 –

+0

PostMessageを使用しても機能しませんでしたが、SetForegroundWindow(hWnd)を使用するたびにウィンドウがフォアグラウンドに設定されているため、間違ったウィンドウハンドルにすることはできません。私が間違っている? – luck2y

関連する問題