Что нового

[Автоматизация] Shutdown_close или как запретить юзерам выключать комп в заданный день!

art279

Новичок
Сообщения
20
Репутация
3
AutoIt: 3.3.6.1

Категория: Администрирование, Автоматизация

Описание: Часто так случается что в какой-либо из дней Вам приходится затевать массовую дефрагментацию, проверку на вирусы или тому подобное после рабочей смены на нескольких компьютерах (а может и на нескольких десятках и даже сотнях) ну и конечно же все компьютеры должны оставаться включенными! А вот пользователи частенько об этом забывают (хотя эту процедуру Вы делаете на протяжении нескольких лет и на протяжении этих же лет устали им об этом напоминать и бегать по кабинетам заново включать "компы" ;D), так вот этот скрипт напомнит забывчивым "юзерам" о своём долге уходя оставить машину включенной!!! :smile:

@WDAY и @HOUR меняете в зависимости от ваших потребностей!
[box title=Из справки]
@SEC Число секунд на системных часах. От 00 до 59
@MIN Число минут на системных часах. От 00 до 59
@HOUR Число часов на системных часах в 24-часовом формате. От 00 до 23
@MDAY День месяца. От 01 до 31
@MON Месяц. От 01 до 12
@YEAR Год - четырене знаюначное число
@WDAY Номер дня недели. От 1 до 7, начиная с ВОСКРЕСЕНЬЯ, заканчивая СУББОТОЙ.
@YDAY День года. От 1 до 366.
[/box]

Код: Пример
Код:
#include <GUIConstants.au3>
Opt("TrayIconDebug", 1)
;Opt("TrayAutoPause", 0)
;Opt("TrayIconHide", 1)
GUICreate("Сообщение от Админа!", 575,100)
GUICtrlCreateGroup ("КОМПЬЮТЕР СЕГОДНЯ ВЫКЛЮЧАТЬ НЕЛЬЗЯ! ТОЛЬКО ПРИ НЕОБХОДИМОСТИ!", 10, 10, 555, 70)
$button1=GUICtrlCreateButton ("ВЫКЛЮЧИТЬ КОМПЬЮТЕР", 15, 35, 175, 40)
$button2=GUICtrlCreateButton ("ПЕРЕЗАГРУЗИТЬ КОМПЬЮТЕР", 200, 35, 175, 40)
$button3=GUICtrlCreateButton ("ОТМЕНА", 385, 35, 175, 40)

$title="Завершение работы Windows"
;$title="Выключить компьютер"

$dist=(@StartupCommonDir & "\shutdown_close.exe")

if @WDAY=1 And @HOUR<20 Then
	
Do
	WinWait($title)
	Send("{ESC}")
	MsgBox(262208, "Сообщение от Админа", "СЕГОДНЯ КОМПЬЮТЕР НЕ ОТКЛЮЧАЕМ!!!")

while 1
GUISetState()
$msg=GUIGetMsg()

     Select
		 
         Case $msg = $button1
	       MsgBox(64, "info", "Вы выбрали выключение")
           Shutdown(1)
		   Exit
		   
         Case $msg = $button2
	       MsgBox(64, "info", "Вы выбрали перезагрузку")
           Shutdown(2)   
           Exit
		   
         Case $msg = $button3
	       MsgBox(64, "info", "Вы отменили действие")
		   Run($dist)
           Exit
		   
	 EndSelect		 
	 
WEnd

Until 1

EndIf

Файл: ?
Снимок: none

История версий:
v1.0
* Первый релиз.

Источник: http://autoit-script.ru/index.php/topic,2483.0.html
Автор(ы): art279
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
art279
Если вам нужно просто предупредить ваших сотрудников о том чтобы компьютер сегодня не выключали, IMHO вот основа для вашего кода, более нечего не нужно!
Этот пример, можно приспособить под таймер и управление им по сети.
Код:
While 1
	If WinActive("[CLASS:#32770]","Выключить компьютер") Then
		MsgBox(16,"ЗЛОЙ АДМИН!!!","СЕГОДНЯ КОМПЬЮТЕР НЕ ОТКЛЮЧАЕМ!!!")
	EndIf
	Sleep(100)
WEnd


Запустите этот пример и попробуйте выключить компьютер.
P.S. Если у вас английская версия Windows то соответственно "Выключить компьютер" нужно будет сменить
 
Автор
A

art279

Новичок
Сообщения
20
Репутация
3
Эммм, я так уже делал, но у нас они как правило почему то так яростно торопясь, не сразу понимают что происходит и пытаются повторить действие ещё раз :rofl:

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


Код:
$title="Завершение работы Windows"
Opt("TrayIconHide", 1)
if @WDAY=1 And @HOUR<20 Then

While 1
WinWait($title)
    Send("{ESC}")
    MsgBox(262208, "Сообщение от Админа", "СЕГОДНЯ КОМПЬЮТЕР НЕ ОТКЛЮЧАЕМ!!!")
WEnd


P.S. А как вы определили класс окна??? Поделитесь секретом, ведь при появлении этого окна всё становится неактивным....
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
art279 сказал(а):
Эммм, я так уже делал, но у нас они как правило почему то так яростно торопясь, не сразу понимают что происходит и пытаются повторить действие ещё раз :rofl:
Так скрипт же в цикле! Надоест, уйдут, оставив компьютер включённым! ;)

art279 [?]
P.S. А как вы определили класс окна??? Поделитесь секретом, ведь при появлении этого окна всё становится неактивным....
"опыт - сын ошибок трудных"
Все диалоговые окна имеют класс Class #32770
 
Автор
A

art279

Новичок
Сообщения
20
Репутация
3
ой, Вы моих юзеров незнаете, им лишь бы убежать ;D
 

irshat

Новичок
Сообщения
7
Репутация
0
Код:
While 1
    If WinActive("[CLASS:#32770]","Выключить компьютер") Then
        MsgBox(16,"ЗЛОЙ АДМИН!!!","СЕГОДНЯ КОМПЬЮТЕР НЕ ОТКЛЮЧАЕМ!!!")
    EndIf
    Sleep(100)
WEnd
Один минус этого способа, что при открытых окнах, окошко предупреждения прячется сзади окон, а повторное нажатие выключения срабатывает.
 
Верх