Wpf 使用Lync SDK覆盖Lync状态

Wpf 使用Lync SDK覆盖Lync状态,wpf,lync,lync-client-sdk,Wpf,Lync,Lync Client Sdk,我正在使用Lync SDK开发wpf应用程序,该应用程序位于windows 2012R2服务器上,我使用远程桌面会话访问该服务器。我正在尝试保持登录的lync帐户始终可用,即使没有用户登录到计算机 我设置了一个计时器,每15秒运行一次代码: if (client.State == ClientState.SignedIn) { counter++; Console.WriteLine("Account is green: " + counter); Dictionary&

我正在使用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));
}
if(client.State==ClientState.SignedIn)
{
计数器++;
Console.WriteLine(“帐户为绿色:+计数器”);
字典状态=新建字典();
添加(PublishableContactInformationType.Availability,Microsoft.Lync.Controls.ContactAvailability.Free);
client.Self.BeginPublishContactInformation(状态、PublicationCallback、时间);
Console.WriteLine(client.Self.Contact.GetContactInformation(ContactInformationType.Activity));
}
虽然这会将用户的状态设置为在有人登录时可用(即使没有人在使用计算机),但每当我断开与远程桌面会话的连接时(服务器锁定但仍在运行),该状态都会消失


如果计算机被锁定或未被锁定,我有没有办法让它忽略?

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

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

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文件中,并在离开计算机之前运行它。这将防止因可能设置的使用不足而触发的任何睡眠。

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

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

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文件中,并在离开计算机之前运行它。这将防止因可能设置的使用不足而触发的任何睡眠。

或者,您可以使用中介绍的.NET解决方案,与tscon命令一起使用,以防止电脑因不活动而睡眠,而不是注销,您可以使用中介绍的.NET解决方案,防止电脑因不活动而休眠,同时使用tscon命令,而不是注销