我试图利用Office与C#,但我遇到了一些困难。执行像我下面所包含的测试,只要它启动Outlook并与它连接起来,就可以工作了。问题是,如果我随后尝试打开Outlook窗口(它开始隐藏在托盘中),我会从Outlook收到一条错误消息,表示如果在启动应用程序之前,The application was unable to start correctly (0xc0000142).已经运行,则不会收到此错误。我是做错了什么还是什么东西坏了?
using System;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookInteropTest1
{
class Program
{
static void Main(string[] args)
{
var app = new Outlook.Application();
Console.ReadKey();
}
}
}Visual Community2017版15.2
Office360-OutlookVersion1804构建9226.2156
Windows 10构建17115.1
编辑:在Windows7上对此进行了测试,无法再现崩溃。我知道我曾经在Windows 10中工作过。我重新安装了我的操作系统,它仍然崩溃。除非有人对如何解决这个问题有任何想法,否则我会为微软的典型用户体验而窒息。
发布于 2018-05-16 02:13:02
Outlook是一个单例,因此如果Outlook已经在运行,则创建一个新对象将返回现有对象。
在您的示例中,还需要为其提供命名空间。
olApp = new Outlook.Application();
Outlook.Namespace ns = olApp.GetNamespace("MAPI");
ns.Logon();发布于 2020-02-28 20:09:50
我知道这是个老问题,但我也遇到了同样的问题,也许这会对未来的人有所帮助:正如IAmRajshah所提到的,只有一个olApp = new Outlook.Application();可以运行,所以,如果olApp = new Outlook.Application();打开了,您需要用类似于Oulook.Application olApp = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;这样的名称“连接”到outlook的活动实例--下面的链接有一个很好的例子:
https://stackoverflow.com/questions/50361486
复制相似问题