ゲームのウィンドウで「ドラッグ」アクションに取り組んでいます。ある場所で mouse_down してから、別の場所で mouse_up したい。
C# コードは次のとおりです。
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(p, (uint)0x201, (IntPtr)0x1, xd); // down button (start x,y)
SendMessage(p, (uint)0x202, (IntPtr)0x0, xd2); // up button (final x,y)
そのコードを ac# 形式のボタン (START という名前のボタンとしましょう) に接続しました。START を押してマウスを動かし続けると、完全に機能します。しかし、START を押して (画面上でカーソルを動かさずに) アクションを待つだけでは、何も起こりません。フォームのボタンを押しながらゲームのウィンドウをスパイ++でチェックしましたが、そのボタンを押す2つの方法(カーソルを移動する/移動しない)に違いはありません。
カーソルを移動している間、ウィンドウが最小化されていてもアクションが実行されることを追加するのを忘れていました (これは非常にクールです)。
問題の原因は何ですか? :P
編集:
WM_MOUSEDOWN = 0x201;
WM_MOUSEUP = 0x202;
そのコードは関数に配置され、p は Windows ハンドルであり、ボタン START はその関数を実行します。
前に言ったように、カーソルを移動している間、コードは問題なく動作します