Officeクリップボードコレクションがオンになっているかどうかを知りたい。これは、最後の24個のクリップボードデータを保存するクリップボードペインです。Office 2007および2010では、ホームリボンのクリップボード領域を展開することで取得できます。Office2003では、作業ウィンドウ領域からクリップボードを開き、メニューからクリップボードを選択できます。
私はOfficeプラグインを持っています。
私は(IATを使用して)あらゆる種類のAPIフックを実行していますが、最も単純なソリューションを探しています。
私の最初のアイデアは、「Collect and Paste 2.0」(Spy ++で自分自身をチェックしてください)というタイトルのウィンドウを探し、さまざまなWindowsクラス(たとえば、Wordではbosa_sdm_msword)を使用することでした。ただし、ユーザーは[Officeクリップボードを表示せずに収集する]をオンにして、Officeを再起動できます。この時点で、Officeはウィンドウへのサインなしでデータを収集します。
私はレジストリキーを見ています:Software \ Microsoft \ Office \%d.0 \ Common \ General\AcbOn。これはすばらしいですが、このエントリはユーザーがOfficeを終了するまで保存されません。したがって、ユーザーは別のアプリケーションを開いたり、コレクションをオンにしたり、ウィンドウを閉じたりすることができます。
Officeクリップボードは、通知領域にアイコンを作成します。質問を参照してください:通知領域アイコンのリストを取得する方法は?。残念ながら、この質問にはその答えがありませんでした。これに対する答えを知っている場合は、ここまたはその質問に返信してください(+1が2回得られます!)
私が言ったように、私はアプリケーションのプロセスの中にいて、エクスポートシンボルを持つものはすべて傍受することができますが、アプリケーションへの影響を最小限に抑えたいと思います。たとえば、送信メッセージを傍受したり、ウィンドウをサブクラス化したりすると、Officeアプリケーションのパフォーマンス(場合によっては安定性)に影響します。
Office 2003には、('ActiveClipboard')という名前のクラスのウィンドウがありますが、2007と2010では見つかりません。一方、WM_USER + 2304が表示されますが、これが何であるかはわかりません。
誰かがその道を通り抜けましたか?ヒントはありますか?