我正在尝试访问Microsoft COM对象。
正如在PowerShell中使用Skype For Business和Lync client对象一样。
与这正好相反。
[Reflection.Assembly]::LoadFile("C:\temp\Microsoft.Lync.Model.dll")
[Reflection.Assembly]::LoadFile("C:\temp\microsoft.office.uc.dll")
$lyncclient = [Microsoft.Lync.Model.LyncClient]::GetClient()
$lyncclient2 = [Microsoft.Lync.Model.ContactInformationType]::Availability
$lyncclient.Self.Contact.GetContactInformation($lyncclient2);
此代码将导致当前Lync/Skype用户的存在。
$teamsClient = [Microsoft.Office.Uc.IUCOfficeIntegration]
$teamsClient.GetInterfaces()
以下的小文章presence.htm,我甚至不能收到在得到-儿童的HKLM仅在Get-儿童HKCU的Com列表。
我的目标是使用与Outlook相同的功能,在MS团队中读取用户的存在。
发布于 2021-02-25 16:31:08
团队仍在通过COM公开一些功能。它实现了IUCOfficeIntegration接口,因此Microsoft可以在Outlook本身中显示联系人的可用状态。
有关如何工作的更多信息可以在这里找到。
我只是快速地描述了我做了什么,以获得可利用的信息,通过COM。注意,这是C#代码。我希望这还能帮上忙。
获取Teams类的ClassID。
安装Outlook和Team后,团队将注册为能够向Outlook提供可用信息的IM应用程序。这是通过编写一些注册表节点来完成的。在这里可以找到Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\IM提供者\Team
获取可用性:
为了做到这一点,我基本上颠倒了链接文章中演示如何为实现客户机的所有步骤,因为我想使用Teams。请注意,需要安装Lync (https://www.microsoft.com/en-us/download/details.aspx?id=36824),因为所有都是在其中定义的。(需要参考Microsoft.Office.Uc.dll )。也许这个图书馆可以
class Program
{
static void Main()
{
var version = "15.0.0.0";
var teams = (IUCOfficeIntegration) new TeamsOfficeIntegration();
var client = (IClient) teams.GetInterface(version, OIInterface.oiInterfaceILyncClient);
var contactManager = client.ContactManager;
var uri = "name@company.com";
var contact = contactManager.GetContactByUri(uri);
var availibility =
(ContactAvailability) contact.GetContactInformation(ContactInformationType.ucPresenceAvailability);
}
[ComImport, Guid("00425F68-FFC1-445F-8EDF-EF78B84BA1C7")]
public class TeamsOfficeIntegration
{
}
}
我将尝试上传一个小项目到GitHub演示.
由于Powershell是基于.NET的,所以这在某种程度上也是可能的。或者可以编写一个小型的C#互操作库。
发布于 2019-07-03 14:13:56
团队根本不使用COM,也永远不会使用COM。
我们计划支持Microsoft中的存在API,没有日期可供共享。
https://stackoverflow.com/questions/56865704
复制相似问题