2017-02-07 1 views
0

実行していない場合はOutlookの新しいインスタンスを開始するか、既に実行されている場合は最初のインスタンスにアタッチするC#プログラムを作成しようとしています。Interop C#を使用してOutlookを起動または接続する方法は?

これまでのディスカッションalreadyでは、私が達成しようとしていることがかなりわかりました。 Microsoft Solutionの問題は、Outlookプラグイン/アドインの一部が正しく動作しないことです(iManage Filesite/Worksiteなど)。 Outlookが起動するとプラグインがリボンに表示されますが、一部の機能が失われ、検索などを試みるとOutlookが応答を停止してクラッシュします。

System.Diagnostics.Process.Start(@"OUTLOOK.exe"); 

しかし

application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application; 

は、COMエラー(0x800401E3 MK_E_UNAVAILABLE)で失敗するので、私は実行しているOutlookのインスタンスにアタッチことはできません。見通しは、コンソールなどから起動された場合、プラグインが正常に動作します。私は、アプリケーションをデバッグして、それを実行すれば、このエラーを回避することができます。私はアクティブなウィンドウを切り替える(フォーカスを変更する)Outlookの開始時間を許そうとしましたが、これらのオプションは機能しません。

+0

Outlookからアカウントを削除します。 OutlookのPSTファイルをクリアします。 Outlookをセーフモードで開きます。アカウントを追加し、すべてのフォルダが更新されるまで待ちます。 Outlookを閉じて開きます。もう一度同じ質問をしてみてください。 – Gokul

答えて

0

GetActiveObjectからのエラーメッセージは、おそらくコードとOutlookが異なるセキュリティコンテキストで実行されていることを意味します。いずれのアプリケーション(またはその両方)も昇格された権限(Run As Administrator)で実行されていないことを確認してください。

+0

タスクマネージャをチェックインしましたが、両方ともユーザー権限でしか実行されていません –

+0

「管理者として実行」を使用しても、両方のアプリはどのように起動していますか? –

+0

私はコンソール(非管理者)とVisual Studioデバッガ(非管理者)からアプリを起動することをテストしました。私はGetActiveObject行をステップオーバーした場合のみVSから起動する、それ以外の場合、私はCOMエラーを取得する(その理由は、ウィンドウのフォーカスを切り替えてみました) –

関連する問題