2009-05-05 6 views
5

コード内でOutlookを起動させることはできますか?C#でOutlookを起動する

我々はオブジェクトのOutlook.Application 'を使用し、書き込みVB6で

:」

Set oOutlook = CreateObject("Outlook.Application") 
Set oNameSpace = oOutlook.GetNamespace("MAPI") 
Set oInbox = oNameSpace.Folders(1) 
'Set oInbox = oInbox.Folders("Inbox") 
oInbox.Display 
'oOutlook.Quit 'Close All Outlook copies 

リンクからコピー/貼り付け:http://www.ozgrid.com/forum/showthread.php?t=73886

答えて

4

あなただけのOutlookを起動したい場合は、 System.Diagnostics.Processを使用するのが最も簡単な方法です。 :)

+0

私はそれが:)に動作すると思います。ありがとう! – jeje1983

+0

質問のコードには実際には適用されませんが、確かに –

7

System.Diagnostics.Processはプロセスを開始します。

フォルダを選択するなどの追加の操作を行うには、Microsoft Visual Studio Tools for Office(VSTO)を使用する必要があります。そしてhereは参考になります。たとえば:

var outlook = new Microsoft.Office.Interop.Outlook.ApplicationClass(); 
outlook.Quit(); 
+1

Office相互運用機能を使用する場合は、XXXClassクラスを使用しないでください。私はあなたがvar outlook = new Microsoft.Office.Interop.Outlook.Application();を意味すると思います。 – foson

+0

ありがとう!非常に興味深い意見。なぜ知っていますか?使用しないでください。 Excel.ApplicationClassクラスを使用しているところでは、複雑なExcel-Excelデータ処理アプリケーションがあります。すべてが正しく動作します!また、http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.application.aspxはインターフェイスですか? – abatishchev

+1

アプリケーションの使用は、Outlookが既に実行されていてもOutlookの新しいインスタンスを呼び出さない場合に機能します。既存のインスタンスを使用するか、必要に応じて新しいインスタンスを呼び出すApplicationClassを使用する必要がありました。 – Damien

4

あなたはすべての種類の情報(なしのIntelliSense)を失うことになるタイプ及び活性化

Type objectType = Type.GetTypeFromProgID("Outlook.Application"); 
object outlook = Activator.CreateInstance(objectType); 

しかし、C#で、これを使用して取得するためのプログラムIDを使用することができ、あなたが呼び出す必要がありますLateBinding(google for Type.Invoke)を使用して操作を呼び出すいくつかの醜いメソッド

その他のオプションは、Microsoft.Office.Interop.Outlook.ApplicationClassへの参照を追加するため、時刻情報をコンパイルしてOutlook用のインスタンスを作成します通常の方法で

using Microsoft.Office.Interop.Outlook; 
Microsoft.Office.Interop.Outlook.ApplicationClass outlook 
    = new Microsoft.Office.Interop.Outlook.ApplicationClass(); 

それとも、私のLate Binding Helperライブラリを使用して、この1と、この

Invoker outlook = BindingFactory.CreateAutomationBinding("Outlook.Application"); 
outlook.Method("Quit").Invoke(); 

んインテリセンスのようにそれを使用することができますが、少なくとも、ライブラリがType.Invokeと与えることを醜い呼び出しからあなたを救いますあなたに流暢なインターフェイスを提供します。

0

これは、(あなたはそれがアプリを実行するマシン上にあるものへのパスを変更する必要がある場合があります)動作します:

public static void StartOutlookIfNotRunning() 
{ 
    string OutlookFilepath = @"C:\Program Files (x86)\Microsoft Office\Office12\OUTLOOK.EXE"; 
    if (Process.GetProcessesByName("OUTLOOK").Count() > 0) return; 
    Process process = new Process(); 
    process.StartInfo = new ProcessStartInfo(OutlookFilepath); 
    process.Start(); 
} 
関連する問題