如何使用 VBA 在 Outlook 中检索在线状态
How to retrieve online presence status in Outlook using VBA
问题
我需要使用 VBA 从 Microsoft Outlook 获取在线状态。
状态显示为联系人姓名附近显示的绿-黄-红-灰灯,通常由某些即时消息 (IM) 应用程序(例如 Teams、Skype、Zoom、Jabber 等)提供。
这是通常的样子:
可用数据
不幸的是,状态在 Outlook 结构中不可用 AddressEntry
or ExchangeUser
,这很容易获得。
注意:请不要将在线状态与日历可用性混淆,后者可以使用函数 GetFreeBusy
.
轻松检索
另一种观点
我在这里找到的与主题相关的唯一相关且相当不错的描述:https://docs.microsoft.com/en-us/office/client-developer/shared/integrating-im-applications-with-office .
但这里的主题是从不同的角度提出的——从IM应用程序端应该做什么来提供这种状态。简而言之:IM 应用程序应该在 ...\Software\IM Providers\...
下的注册表中添加一些数据并实现接口 IUCOfficeIntegration
,以便 Outlook 可以使用它来检索状态。
所以中间的想法是直接从 IM 应用程序通过此接口检索状态。但是关于从VBA.
调用COM接口的资料很少
是否有人可以提供任何提示如何检索状态?
您可以为此使用 Graph。不过,我认为您无法使用 VBA。
https://docs.microsoft.com/en-us/graph/api/presence-get?view=graph-rest-1.0&tabs=http
Outlook 对象模型没有为此提供任何 属性 或方法。图 API 为此提供了 Get presence 方法。
问题
我需要使用 VBA 从 Microsoft Outlook 获取在线状态。 状态显示为联系人姓名附近显示的绿-黄-红-灰灯,通常由某些即时消息 (IM) 应用程序(例如 Teams、Skype、Zoom、Jabber 等)提供。
这是通常的样子:
可用数据
不幸的是,状态在 Outlook 结构中不可用 AddressEntry
or ExchangeUser
,这很容易获得。
注意:请不要将在线状态与日历可用性混淆,后者可以使用函数 GetFreeBusy
.
另一种观点
我在这里找到的与主题相关的唯一相关且相当不错的描述:https://docs.microsoft.com/en-us/office/client-developer/shared/integrating-im-applications-with-office .
但这里的主题是从不同的角度提出的——从IM应用程序端应该做什么来提供这种状态。简而言之:IM 应用程序应该在 ...\Software\IM Providers\...
下的注册表中添加一些数据并实现接口 IUCOfficeIntegration
,以便 Outlook 可以使用它来检索状态。
所以中间的想法是直接从 IM 应用程序通过此接口检索状态。但是关于从VBA.
调用COM接口的资料很少是否有人可以提供任何提示如何检索状态?
您可以为此使用 Graph。不过,我认为您无法使用 VBA。
https://docs.microsoft.com/en-us/graph/api/presence-get?view=graph-rest-1.0&tabs=http
Outlook 对象模型没有为此提供任何 属性 或方法。图 API 为此提供了 Get presence 方法。