2009-06-08 13 views
0

winformsアプリケーションに繰り返し送信されたWindowsメッセージが必要です。 今、私は、選択されたメッセージ(WM _KEYDOWN、WM _LBUTTONDOWNなど)をリストに保存する "IMessageFilter"を実装するクラスを持っています。WinformsでWindowsメッセージを繰り返す

「一時停止/中断」キーでは、メッセージのリストをコピーし、元のリストをクリアし、メッセージを再送信します。

私のテストプロジェクトでは、メニュー項目が1つ、タブが1つ、リッチテキストボックスが1つのみのフォームが1つです。コントロールのhWndは、メッセージの保存中および繰り返し中に同じです。

すべて正常に動作しますが、送信メッセージは正しくありません。

サンプルコード:それはあまりにも簡単に見えますが、問題となる可能性がどこかわからない

[System.Runtime.InteropServices.DllImport("user32")] 
public static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam); 

// ... in some method ... 
SendMessage(msg.HWnd, msg.Msg, msg.WParam, msg.LParam); 

答えて

1

まだメッセージフィルタが適用されていますか?メッセージを送信するのを妨げないでしょうか?他の可能性は、問題のメッセージが送信されるべきではなく、送信されるべきであるということである。または、ターゲットウィンドウの正しいスレッドからメッセージを送信する必要があります。

+0

MessageFilterは常に「false」を返します。したがって、メッセージは実際にはフィルタされません。しかし、私はSendMessageの代わりにPostMessageを使ってみました。 – TcKs

+0

PostMessageが正しいヒントでした。今、それはよさそうだ。ありがとう! – TcKs

関連する問題