クリップボードを監視するための小さなユーティリティアプリケーションを作成しています。これは現在非常にうまく機能していますが、クリップボードを変更するとランダムにアラートの表示が停止し、再起動すると修正されると友人から言われました。
再現できませんでしたが、最終的には自分で遭遇しました。アプリケーションはWM_DRAWCLIPBOARD
イベントの受信を停止していました。
アプリケーションがリスナーチェーンから削除されたことをどのように確認できますか?
これは、クリップボードリスナーチェーンの危険性の1つです。1つの悪いアプリケーションがチェーンを損傷する可能性があります。SetClipboardViewer
関数を使用する代わりに、AddClipboardFormatListener
この問題のないものを使用してください。
SetClipboardViewerを使用するアプリケーションをデバッグしているときに、アプリケーションがクラッシュしたり、デバッガーでアプリケーションを停止したり、クリップボードチェーンの復元をバイパスしたりすると、Windowsのパフォーマンスが低下し、 Alt-Tabなどのウィンドウ、または最小化されたウィンドウの復元は、機能を停止します。Windowsを再起動すると、それらは戻ってきます。
この方法でクリップボードチェーンに自分自身を挿入するアプリケーションは、この問題を回避するために、メインフォームの破棄中または別の適切な時間にChangeClipboardChainを呼び出す必要があります。デバッガーでアプリを停止した場合、Disposeは呼び出されません。
AddClipboardFormatListenerを試していません。初めて聞いた。デバッグ中に自分のアプリで問題を回避できるかどうかを確認するために試してみます。