6

このリンクにある「Catch Clipboard Events コード」の使用に問題があります。

クリップボード イベント C#

コードは、フォームがトレイに最小化されずにフォアグラウンドにある場合にのみうまく機能しますが、notifyicon を追加してフォームをトレイに最小化し、showintaskbar を false にすると (トレイにアイコンのみが表示されるように)、プログラムはクリップボードの変更をキャッチしません...フォームを最大化しても、再び機能しません...プログラムを再起動する必要があります..

この問題を解決する方法についてのアイデア!? フォームがトレイに最小化されている場合でも、クリップボードの変更をキャッチするにはどうすればよいですか!?

どんな助けでも本当に感謝しています...

ありがとう

4

2 に答える 2

1

最小化されている場合は機能するはずです-実際には最小化されているか、非表示になっています。「最小化」の実装がウィンドウの破棄を伴う場合、そのハンドルは無効です。そして、ダウンストリームのクリップボードイベントをリッスンしていたクリップボードチェーンが壊れました...

this.Handle を文字列 (例: "123456") として表示するには、デバッグ コードをそこにスローします。フォームのクリック イベントに SetClipboardViewer の呼び出しを配置し​​ます。それをクリックして、番号を参照してください。最小化、復元。もう一度クリックします。同じ番号ですか?あなたがすべき。そうでない場合は、問題があります。クリップボード イベントは、存在するウィンドウに移動する必要があります。バックグラウンドで非表示のウィンドウにすることができます。

-- クリス

于 2010-03-22T01:29:15.663 に答える
1

とにかく、非表示の別のフォームを作成し、それを使用して Windows メッセージをキャッチすることができます。そのウィンドウを閉じたり再作成したりしないでください。起動時に開き、開いたままですが、見えません。これは機能します。

クリス

于 2010-03-23T03:07:40.297 に答える