检查新 Outlook 是否正在运行,如果正在发送电子邮件

Checking If NEW Outlook is running and sending emails if it is

提问人:Roy 提问时间:10/31/2023 最后编辑:Eugene AstafievRoy 更新时间:11/1/2023 访问量:46

问:

我有一个桌面应用程序,可以检查 Outlook 是否正在运行以及是否正在发送电子邮件。

我的客户刚刚将 Outlook 升级到“新”Outlook,应用程序的这一部分现已停止工作

我用来检查Outlook是否正在运行的代码是

   If isAppThere("Outlook.Application") = False Then

                MsgBox("Outlook is closed. Please start up Outlook")
                Exit Sub

Function isAppThere(appName) As Boolean

        Dim objApp As Object
        On Error GoTo OUTERR
        isAppThere = True
        objApp = GetObject(, appName)
OUTERR:
        If Err.Number <> 0 Then
            isAppThere = False
        End If


    End Function

如果我删除此部分并让程序尝试通过Outlook发送电子邮件,则会出现错误“使用CLSID检索组件的COM类.....由于以下错误而失败80080005服务器执行失败”。

使用旧版本的 Outlook 运行相同程序的另一个用户没有问题。显然,“新”展望导致了这个问题。那么如何检查此版本是否正在运行以及如何通过此新版本发送电子邮件?

提前致谢

请看上文。我尝试通过新 Outlook 发送电子邮件

vb.net Outlook 办公自动化

评论


答:

1赞 Dmitry Streblechenko 11/1/2023 #1

您不能使用新的 Outlook 以编程方式发送或执行任何操作 - 它没有公开可用的 API。

您唯一的选择是告诉客户不要降级到新的 Outlook - 它是 Windows Mail 和 Windows 日历的替代品,而不是桌面 Outlook,后者仍完全受支持。

1赞 Eugene Astafiev 11/1/2023 #2

l您可以只检查正在运行的进程列表,而不是获取正在运行的 Outlook 应用程序实例。

If Process.GetProcessesByName("Outlook").Length < 1 Then
   ' not running 
End If