0

Microsoft Office 用の COM アドインを開発しました。Office アプリケーションの起動時にアドインが読み込まれていることを確認したいと思います (つまり、誰もレジストリでアドインを無効にしようとしませんでした)。私たちの現在の解決策は、Office アプリケーションが開始された秒から数えて、特定の時間後にアドインが通信することになっている外部アプリケーションを使用していることです。通信できなかった場合は、Office アプリケーションを停止し、レジストリでロードすることを確認してから、再度開始します。待つのに適切な時間を誰も推測できないため、これは問題のあるシステムです。また、10 分間の作業後に突然エラーが発生することをユーザーに知らせたくありません。 -in はできるだけ早くロードされます。

何か案は?

4

2 に答える 2

0

汚い解決策かもしれませんが、メインの Outlook ウィンドウのタイトルが "Opening Outlook" から別のタイトルに変わるまで待つことができますか?

タスク マネージャーの Outlook。

上記のスクリーン ショットは、Outlook がまだマシンにロードされている間に撮ったスクリーンショットから切り取ったものです。

したがって、Outlook のプロセスをポーリングし、メイン ウィンドウのキャプションを取得して、オープニングが含まれているかどうかを確認します。2つの欠陥がある可能性のある非常に汚いソリューション:

  1. ローカライズされた Outlook では、異なるメッセージが表示される場合があります。
  2. プロセスのクエリ、メイン ウィンドウの取得、およびタイマー間隔の取得にかかる時間によっては、オープニング メッセージを見逃す可能性があります。

「開始中」メッセージが消えた後だと思います - すべてのアドインは、無効になっていない限りロードされているはずです。

おそらく、Outlook プロセスの MainWindowTitle プロパティは、「開始メッセージ」を検査するものになります。まだ試していません:

Process.MainWindowTitle プロパティ - MSDN

更新: これにより、Outlook が既存のアドインを起動する前の起動時にデータの整合性チェックなどを行っているというシナリオをうまく回避できますが、このアプローチが安全であると考える前に、実際に多くのテストを行う必要があります ...

これがお役に立てば幸いです。必要な場合に備えて使用できるように、機能するかどうかをお知らせください。

于 2012-11-04T12:32:45.973 に答える
0

これが本当に「ガーディアン」アプリケーションが行っていることである場合は、アプローチを再検討することをお勧めします。1. レジストリを確認する前に Office アプリを停止したいのはなぜですか? 2. チェックに合格したが、アドインがまだ実行されていない場合はどうしますか?

次のようなことをお勧めします: 1. アドインを実行することが非常に重要な場合は、Office アプリのショートカットをアプリに置き換えます (企業環境など、可能であれば) 2. Officeアプリを閉じる前にレジストリを確認してください。 3. 「guradian」アプリ内で Office アプリをエミュレートしてみてください - インスタンスを作成し、アドインが読み込まれているかどうかを確認します

どのようなアプローチでも、これは会社の規則の強制のように聞こえます。この場合、ショートカットとオフィス アプリのインストールを制御できます。この場合は、過度に堂々とした商用ソフトウェアのように思えます (つまり、正しいアプローチだと思います)。

HTH

于 2012-11-10T02:02:23.617 に答える