2012-02-02 18 views
1

私は、アプリケーションにこれらのメッセージを送信したい:SendMessage/PostMessage関数の使い方は?

<00010> 00830BB8 S WM_GETDLGCODE 
<00011> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS 
<00012> 00830BB8 P WM_PAINT hdc:00000000 
<00013> 00830BB8 S WM_ERASEBKGND hdc:DD012964 
<00014> 00830BB8 R WM_ERASEBKGND fErased:True 
<00015> 00830BB8 P WM_TIMER wTimerID:1 tmprc:00000000 
<00016> 00830BB8 S WM_GETDLGCODE 
<00017> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS 
<00018> 00830BB8 S WM_GETDLGCODE 
<00019> 00830BB8 R WM_GETDLGCODE fuDlgCode:DLGC_WANTARROWS 
<00020> 00830BB8 P WM_PAINT hdc:00000000 
<00021> 00830BB8 S WM_ERASEBKGND hdc:7601294E 
<00022> 00830BB8 R WM_ERASEBKGND fErased:True 

これらはスパイ++からです。 C#を使用してSendMessage/PostMessage関数を使用して送信するにはどうすればよいですか?

編集.. あなたの返信ありがとうございました! 私はもう一度、私の問題を解決しました!

+2

いいえ、すべてのメッセージを送信したくないです。それらのいくつかはウィンドウによって送信されるメッセージであり、そのうちのいくつかは送信されたメッセージからの応答です。それらのうちのいくつかは、ダイアログのコンテキストでのみ意味があります。たとえば、GETDLGCODEは、何もしないものを投稿している場合、呼び出し元にデータを返します。 –

+1

あなたは何を達成しようとしていますか? –

+0

コミュニティを支援するために、この質問への回答として問題の回答を投稿してください。 – NickHeidke

答えて

1

私はアプリケーションにキーを送信しようとしましたが、私はSpy ++を使ってこのメッセージを見ました。 具体的には、矢印キーをアプリケーションに送信したかったのです。 Spy ++から、私は上記のメッセージを送ったことを知った。すべてを試してみたところ、次のメッセージがアプリケーションに送られました。

PostMessage(handle, WM_KEYDOWN, (int)Keys.Down, 0x00140001); 
PostMessage(handle, WM_KEYUP, (int)Keys.Down, 0xC0140001); 

正しく動作します。みんなありがとう!

0

ウィンドウのペイントに関連するメッセージを送信することはできません。システムのみがそれらを送信できます。再塗装を強制する必要がある場合は、単にInvalidateRectを呼び出します。

おそらく正常に投稿できるタイマーメッセージです。

WM_GETDLGCODEメッセージは、副作用がないため送信する必要がない可能性があります。