0

ゲームのプロセスでこのアクションをシミュレートする際に問題が発生しました:-mouse_down --mouse_move --mouse_up

手動で行うと、spy++の出力になります。 ここに画像の説明を入力してください

mouse_down:

ここに画像の説明を入力してください

mouse_move:

ここに画像の説明を入力してください

mouse_up:

ここに画像の説明を入力してください

だから私は以下のコードでそれをシミュレートしようとしましたstartx、y:(618,392)final x、y:(618,432)しかしそれは機能していません。

uint Iparm = makeDWord((ushort)x, (ushort)y);
IntPtr xd = new IntPtr(Iparm);
uint Iparm2 = makeDWord((ushort)x2, (ushort)y2);
IntPtr xd2 = new IntPtr(Iparm2);

SendMessage(UltraBot.p, (uint)0x201, (IntPtr)0x1, xd); // down button (start x,y)
SendMessage(UltraBot.p, (uint)0x200, (IntPtr)0x1, xd2); // move (final x,y)
SendMessage(UltraBot.p, (uint)0x202, (IntPtr)0x0, xd2); // up button (final x,y)

コードを使用した後のspy++の出力は次のとおりです。

ここに画像の説明を入力してください

なぜ機能しないのかよくわかりません。私はしばらくの間、この方法を使用してキーをシミュレートしてきました。ctrl+ q、マウスクリックなどのアクションは問題ありませんでした。さらに、それは私のために一度だけ機能しましたが、一度だけでした。私はここで立ち往生しています。助けてくれてありがとう:)

4

1 に答える 1

2

関数を使用してマウスメッセージ(WM_LBUTTONDOWNおよびなど)を送信してマウス入力をシミュレートすることはできません。WM_MOUSEMOVESendMessage

はい、Spy ++でメッセージを監視すると、そのように見えますが、舞台裏ではさらに多くのことが行われています

SendInputマウスまたはキーボードの入力を適切にシミュレートするには、関数を使用する必要があります。C#から呼び出すP/Invoke宣言は次のようになります。

[DllImport("user32.dll", SetLastError = true)]
static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
于 2012-05-04T07:30:41.440 に答える