无法获取正在运行的 Outlook 实例和新的 Interop.Outlook.Application 以管理员身份而不是 Windows 用户身份打开 Outlook

问题描述 投票:0回答:1

自从删除以前的 x86 Office 并安装 Office 2019 64Bit

oOutlook = GetObject(, "Outlook.Application")

当 Outlook 已运行时不再起作用,如果未运行,则 oOutlook = New Microsoft.Office.Interop.Outlook.Application() 在窗口中打开 Outlook 实例,需要在最大化上单击 2 次才能使其最大化。我在引用和以下导入中有 Outlook 对象库

Imports System.IO
Imports System.Net
Imports System.Net.Mail
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Text.RegularExpressions
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Outlook
Imports Redemption

如果我仅使用该行创建 Outlook 的新实例而不关闭当前打开的实例,则会打开一个新的可见实例。当我单击搜索字段时,我收到一条消息:以管理员权限运行时即时搜索不可用。

我尝试了以下选项,但没有成功。当用户打开 Outlook 时,没有一个会获取正在运行的实例或打开 Outlook。该项目也设置为不喜欢 32Bit。

        Try
            'Dim procs() As Process = Process.GetProcessesByName("Outlook")
            'If procs.Count > 0 Then
            'oOutlook = GetObject(, "Outlook.Application")
            'Dim outlookType As Type = Type.GetTypeFromProgID("Outlook.Application")
            'oOutlook = Activator.CreateInstance(outlookType)
            oOutlook = DirectCast(Marshal.GetActiveObject("Outlook.Application"), Outlook.Application)
        Catch
            'Else
            'oOutlook = CreateObject("Outlook.Application")
            oOutlook = New Microsoft.Office.Interop.Outlook.Application()
            'End If
        End Try

我已经读了很多这方面的内容,以至于我的大脑现在已经崩溃了,我迫切需要一个解决方案,所以任何指导/帮助将不胜感激。

.net vb.net outlook
1个回答
0
投票

您是否强制您的项目以 x64 运行?

你不能也不想使用任何CPU,因为这样你的应用程序运行的位大小就“听凭风吹雨打”了。因此,强制您的项目也运行并匹配 Office 的位大小,并且不需要更改代码。

换句话说,从 x32 office 更改为 x64 位的事实不应改变任何内容,但确实要求您更改正在运行的 .net 应用程序的位大小以匹配用于 Office 的相同位大小。

© www.soinside.com 2019 - 2024. All rights reserved.