だからPinvoke.netから、SendMessageのために署名を開始することができます:
[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
これは、ウィンドウハンドルtaks、 hWnd、メッセージID、Msg、およびメッセージIDに基づいて測定を変更する2つの汎用パラメータwParamおよびlParamを含む。
Spy ++があなたに表示しているのは、SendMessageに送信されたパラメータです。ご覧のとおり、wParamとlParamは表示されませんが、hwnd、nHittest、およびwMouseMsgは表示されません。これは、Spy ++がWM_SETCURSORメッセージのwParamパラメータとlParamパラメータの意味を実際に知っており、それらをデコードしているからです。
だから送信したものをスパイ++の各部分をデコード:
00220540
- のhWndパラメータ - メッセージを受信するウィンドウハンドル。
S
- これは SendMessage()経由で送信されたもので、 PostMessage()で送信されたものではありません。 http://msdn.microsoft.com/en-us/library/aa265147(v=vs.60).aspx
WM_SETCURSOR
- メッセージID - Msgパラメータを参照してください。
hwnd:0024052C
- カーソルを含む ウィンドウのハンドル - wParam パラメータ。
nHittest:HTCLIENT
- ヒットテスト コード - lParam パラメータの下位語。
wMouseMsg:WM_MOUSEMOVE
- マウス メッセージ - lParamパラメータの上位ワード。あなたは、ウィンドウにメッセージを送ることについては行くだろう
方法がある:他のメッセージでは、WindowsのドキュメントのmesssageためMsdn.com上の検索を行うことができます何を意味するかを理解するために
enum WindowMessages {
WM_SETCURSOR = 0x0020,
WM_MOUSEMOVE = 0x0200,
....
}
enum HitTestCodes {
HTCLIENT = 1,
....
}
....
IntPtr hWnd = [get your window handle some how]
int lParam = ((int)WindowMessages.WM_MOUSEMOVE) << 16 + (int)HitTestCodes.HTCLIENT;
SendMessage(hWnd, (uint)WindowMessages.WM_SETCURSOR, hWnd, (IntPtr)lParam);
。
それで、すべてのことに答えると、これはあなたがコントロールしようとしているゲームにキーを送ることとは関係ないと思います。 WM_SETCURSORはキーボード入力とは関係ありません。
これはC#SendMessage関数ですか?完全な.Netクラスを記述する。 –
それは問題ではありません、私が使っていたものを投稿しますが、誰かが別の解決策を投稿した場合、簡単に変更できます。 – Ben
最新の編集内容を考慮しても、ここにはまだ質問がありますか?もしそうなら、それは何ですか? –