Что нового

Проверка блокировки компьютера

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Функция проверяет заблокирован ли компьютер (находится в режиме выбора пользователя) или нет. Возвращаемые значения:

0 - не заблокирован
1 - заблокирован


Код:
Global Const $DESKTOP_SWITCHDESKTOP = 0x0100

Func _IsWorkstationLocked()

	Local $Result = False

	$hDesktop = DllCall('user32.dll', 'hwnd', 'OpenDesktop', 'str', 'Default', 'int', 0, 'int', 0, 'int', $DESKTOP_SWITCHDESKTOP)
	If Not @error Then
		$Result = DllCall('user32.dll', 'int', 'SwitchDesktop', 'hwnd', $hDesktop[0])
		$Result = Not $Result[0]
		DllCall('user32.dll', 'int', 'CloseDesktop', 'hwnd', $hDesktop[0])
	EndIf
	Return $Result
EndFunc   ;==>_IsWorkstationLocked
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Yashied, у меня смежный вопрос...
Можно ли средствами AutoIt заблокировать рабочую станцию?
Команда Shutdown, вроде бы, этого не умеет делать...
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
snoitaleR сказал(а):
Yashied, у меня смежный вопрос...
Можно ли средствами AutoIt заблокировать рабочую станцию?
Команда Shutdown, вроде бы этого не умеет делать...

Код:
DllCall('user32.dll', 'int', 'LockWorkStation')
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Yashied, спасибо...

Опять плюсики не работают... :(
 

zed_zedican

Новичок
Сообщения
1
Репутация
0
Полезная информация. Заранее прошу прощения ,возможно, за глупый вопрос. У меня доменная политика блокирует ноутбук через 20 мин. не активности. Каким образом можно это предотвратить или средствами скрипта - разблокировать?

Заранее благодарю за совет.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Вообще то такие вопросы задают в раздел для новичков. А здесь вопросы только по данной "полезняшке"
 

Cornet

Знающий
Сообщения
41
Репутация
6
Не знаю почему, возможно из-за Win10, но у меня данный код не всегда отрабатывает, пришлось добавить в него строчку
Код:
Func _IsWorkstationLocked()
	Local $Result = False
	$hDesktop = DllCall('user32.dll', 'hwnd', 'OpenDesktop', 'str', 'Default', 'int', 0, 'int', 0, 'int', 0x0100)
	If Not @error Then
		$Result = DllCall('user32.dll', 'int', 'SwitchDesktop', 'hwnd', $hDesktop[0])
		$Result = Not $Result[0]
		DllCall('user32.dll', 'int', 'CloseDesktop', 'hwnd', $hDesktop[0])
	EndIf
	If Not $Result And _ProcessGetName(WinGetProcess("[ACTIVE]")) = "LockApp.exe" Then $Result = 1
	Return $Result
EndFunc   ;==>_IsWorkstationLocked
 
Верх