用c#启动Outlook
我可以在代码中使用C#启动Outlook吗?
在VB6中,我们使用对象’Outlook.Application’并写:’
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
如果你只想开始outlook; 使用System.Diagnostics.Process是最简单的方法。 🙂
System.Diagnostics.Process
只会启动一个进程。
要执行其他操作(如选择文件夹),您需要使用Microsoft Visual Studio Tools for Office(VSTO)。 这是它的参考。 例如:
var outlook = new Microsoft.Office.Interop.Outlook.ApplicationClass(); outlook.Quit();
您可以使用其ProgID来获取类型和激活器
Type objectType = Type.GetTypeFromProgID("Outlook.Application"); object outlook = Activator.CreateInstance(objectType);
但是在C#中使用它会丢失所有类型信息(即没有IntelliSense),你需要调用一些丑陋的方法来调用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库并像这样使用它
Invoker outlook = BindingFactory.CreateAutomationBinding("Outlook.Application"); outlook.Method("Quit").Invoke();
没有Intellisense与这个,但至少库将保存您从丑陋的调用Type.Invoke,并为您提供一个流畅的界面。
这可行(您可能必须更改应用程序将运行的计算机上的路径):
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(); }