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);
。
MessageFilterは常に「false」を返します。したがって、メッセージは実際にはフィルタされません。しかし、私はSendMessageの代わりにPostMessageを使ってみました。 – TcKs
PostMessageが正しいヒントでした。今、それはよさそうだ。ありがとう! – TcKs