首页 文章

使用Lync SDK覆盖Lync状态

提问于
浏览
0

我正在使用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));
}

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

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

1 回答

  • 2

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

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

    tscon [YOUR SESSION ID] /DEST:console
    

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

    其次,你必须偶尔移动你的键盘 . 有许多脚本可以做到,但我发现这是我喜欢的,因为它切换了numlock,使计算机在触发时仍然可用 .

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

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

相关问题