Переопределить статус Lync с помощью Lync SDK

Я разрабатываю приложение wpf с использованием Lync SDK, которое находится на сервере 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));
}

Хотя это устанавливает статус пользователя как Доступный, когда кто-то вошел в систему (даже если никто не использует компьютер), всякий раз, когда я отключаюсь от сеанса удаленного рабочего стола (и сервер блокируется, но все еще работает), статус меняется прочь.

Есть ли способ заставить его игнорировать, заблокирован ли компьютер или нет?


person RohitSaxena    schedule 28.03.2016    source источник


Ответы (1)


Игнорирование блокировки было решено совершенно другим решением, которое требует двух разных вещей:

Во-первых, вместо того, чтобы просто закрыть сеанс удаленного рабочего стола, мне пришлось использовать сценарий командной строки, чтобы выйти. Введите это в командную строку, чтобы выйти из системы:

tscon [YOUR SESSION ID] /DEST:console

Вы можете найти свой идентификатор сеанса, заглянув на страницу пользователя вашего диспетчера задач Windows (она может быть скрыта, поэтому вам придется ее отобразить).

Во-вторых, вам нужно время от времени двигать клавиатуру. Есть много скриптов, которые делают это, но мне понравился этот, потому что он переключает 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 и запустите перед тем, как покинуть компьютер. Это предотвратит сон, вызванный неиспользованием, которое может быть установлено.

person RohitSaxena    schedule 30.03.2016
comment
В качестве альтернативы вы можете использовать решение .NET, описанное в заголовке stackoverflow.com/questions/8600627/, чтобы компьютер не спал из-за бездействия вместе с командой tscon вместо выхода из системы - person S.Krishna; 23.11.2016