1

P / Invokeを使用するC#プログラムで、ウィンドウのプロシージャアドレスを変更します。だから私は興味のあるWindowsメッセージに反応することができます。

しかし、システムによってプロシージャが呼び出されるのはいつですか?カスタムプロシージャと残りのコードの両方で操作するリストがあります。システムは、プロシージャを呼び出すことができるかできないかをどのように判断しますか?また、データが破損する可能性はありますか?

例えば

手順のリストにエントリを追加します。

リストを読み通して、コードの別の部分のエントリを処理します。

リストをクリアする前に、プロシージャが引き継ぎ、エントリを追加します。

コードの他の部分に戻ると、リストがクリアされ、新しいエントリは処理されずに破棄されます。

4

1 に答える 1

1

Windowsフォーム(またはWPF)がメッセージポンプを管理する方法を妨げる可能性があるため、これを行うためにp/invokeを使用するべきではありません。

必要に応じて、次の方法を試すことができます 。Windowsメッセージでのフックの設定

または、メインフォームクラスのWndProcをオーバーライドできます。これについては、これ以上の説明は必要ありません。

于 2012-12-01T16:34:19.170 に答える