Как запустить блокировку неактивности рабочей станции? - PullRequest
0 голосов
/ 03 октября 2018

Если вы вызываете API LockWorkstation , он немедленно блокирует рабочую станцию.

Но при использовании чего-то вроде Предел неактивности машины групповая политика, у вас есть льготный период, где:

(и это блокирование происходит, даже если хранитель экрана отключен).

Насколько я могу судить, существование этого льготного периода является внутренней деталью реализации, и хотя его значение существует в реестре:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSaverGracePeriod

Это использование или любое другое поведениея полагаю, что связанные с блокировкой неактивности являются внутренними деталями реализации.

Как я, как приложение, запускаю то же действие, что и блокировка неактивности (так, что происходит, что и должно происходить)?

Так, а неlling LockWorkStation , я хочу вызывать любые вызовы Windows, чтобы она:

  • закрывала экран
  • дает льготный период
  • блокирует рабочую станцию ​​

1 Ответ

0 голосов
/ 03 октября 2018

Справка по windowsAPI здесь ...

GetLastInputInfo извлекает время (в миллисекундах) последнего события ввода.

Чтобы очистить экран:

HWND_BROADCAST = 0xFFFF
WM_SYSCOMMAND = 0x0112
SC_MONITORPOWER = 0xF170

SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2)

2 = отображение выключено

Наконец, чтобы заблокировать рабочую станцию:

Функция API LockWorkStation

Функция LockWorkStation вызывается только процессами, запущенными на интерактивном рабочем столе.Кроме того, пользователь должен войти в систему, а рабочая станция уже не может быть заблокирована.

...