我正在编写一个控制台应用程序,它检查Outlook邮箱的内容,以便将特定电子邮件的内容读入数据库.
无论Outlook是否开放,此应用程序在Visual Studio中都能正常运行.
如果我构建应用程序并从exe运行它只能在Outlook打开时工作,这不是一个真正的问题.
但是,我需要从计划任务运行它,因为它必须每隔几分钟运行一次.这根本不起作用.
我正在使用以下代码:
System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("OUTLOOK"); int collCount = processes.Length; if (collCount != 0) { OutlookApp = Marshal.GetActiveObject("Outlook.Application") as Application; } else { OutlookApp = new Application(); }
我得到的错误信息是:
System.Runtime.InteropServices.COMException(0x800401E3)::操作不可用(0x800401E3(MK_E_UNAVAILABLE)从HRESULT异常)
在System.Runtime.InteropServices在System.Runtime.InteropServices.Marshal.GetActiveObject(GUID&rclsid,IntPtr的保留,对象&ppunk). ImportCruiseEmails.Program.Main()中的Marshal.GetActiveObject(String progID)
在线上 :
Marshal.GetActiveObject("Outlook.Application") as Application;
Outlook和控制台应用程序都在我的用户帐户下运行,该帐户具有管理员权限.整个下午,我一直把头发拉出来.任何人都可以对此有所了解吗?干杯!