【问题标题】:Override Lync Status using Lync SDK使用 Lync SDK 覆盖 Lync 状态
【发布时间】:2016-03-28 23:46:05
【问题描述】:

我正在使用 Lync SDK 开发一个 wpf 应用程序,该应用程序位于我使用远程桌面会话访问的 Windows 2012R2 服务器上。我试图让登录的 lync 帐户始终可用,即使没有用户登录计算机。

我设置了一个计时器,每 15 秒运行一次此代码:

if (client.State == ClientState.SignedIn)
{
    counter++;
    Console.WriteLine("Account is green: " + counter);
    Dictionary<PublishableContactInformationType, object> status = new Dictionary<PublishableContactInformationType, object>();
    status.Add(PublishableContactInformationType.Availability, Microsoft.Lync.Controls.ContactAvailability.Free);
    client.Self.BeginPublishContactInformation(status, PublicationCallback, time);
    Console.WriteLine(client.Self.Contact.GetContactInformation(ContactInformationType.Activity));
}

虽然这确实将用户的状态设置为在有人登录时可用(即使没有人在使用计算机),但每当我断开远程桌面会话(并且服务器锁定但仍在运行)时,状态消失。

如果计算机被锁定,我有什么方法可以让它忽略吗?

【问题讨论】:

    标签: wpf lync lync-client-sdk


    【解决方案1】:

    让它忽略锁定是由一个完全不同的解决方案解决的,它需要两个不同的东西:

    首先,我不得不使用命令提示符脚本离开,而不是仅仅关闭我的远程桌面会话。在您的命令提示符中输入此命令以注销:

    tscon [YOUR SESSION ID] /DEST:console
    

    您可以通过查看 Windows 任务管理器的用户页面找到您的会话 ID(它可能被隐藏,因此您必须显示它)。

    其次,您必须偶尔移动键盘。有很多脚本可以做到这一点,但我发现我喜欢这个,因为它可以切换数字锁,使计算机在触发时仍然可用。

    Dim objResult
    
    Set objShell = WScript.CreateObject("WScript.Shell")    
    i = 0
    
    Do While i = 0
      objResult = objShell.sendkeys("{NUMLOCK}{NUMLOCK}")
      Wscript.Sleep (6000)
    Loop
    

    将其保存在 .vbs 文件中并在离开计算机之前运行它。这将防止因可能设置的使用不足而触发的任何睡眠。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多