Outlook 2007 を外部アプリケーション(C#)から操作しようと試みています。
//using Outlook = Microsoft.Office.Interop.Outlook;
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace ns = app.GetNamespace("MAPI");
ns.Logon( profilename, null, false, true);
といったコードを実行すると、appが生成された時点で、
・既にOutlookが起動中であれば、同一プロファイルのApplicaionオブジェクトとなる
・Outlookが起動していなかった場合、常に使用するプロファイルで起動または、プロファイル選択のダイアログが表示されます。
これは、nsの、CurrentProfileNameプロパティを参照すると、わかります。
プロファイル選択をキャンセルした場合のみ、CurrentProfileNameプロパティは空になるようです。
ns.Logonメソッド発行時にはプロファイルの指定ができるのですが、試した範囲では、CurrentProfileNameプロパティが空のときだけ、指定が有効となることを確認しました。
CurrentProfileNameプロパティが空でない場合、Logon処理が全くの無駄となってしまいます。
このため、今のところ、ユーザによるプロファイル選択キャンセル操作なしに、特定のプロファイルをプログラムで指定して立ち上げることができていません。
ユーザによる操作なしに、プロファイルを指定し、Office 2007を立ち上げるためには、Logonメソッドをどのように使用すればよいのでしょうか?
ちなみに、VisualStudio 2008+Vista64bit+Office2007 での動作です。
実際にやりたいことは、全プロファイルで順次ログオンし、データ参照することなのですが・・・
#プロファイル文字列は、HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows
Messaging Subsystem\Profilesのサブキーから取得しています。
以上、よろしくお願いいたします。