PDA

Показать полную графическую версию : Перезагрузка компьютера


Страниц : 1 [2]

proxy
26-06-2009, 11:18
но перед перезагрузкой ПК этот скрипт-ехе файл удалялся, »
все тот же Bat - необходимо дописать в самом конце скрипта:
Exit Run(@ComSpec & ' /c Del /F /Q "' & @ScriptFullPath & '"', '', @SW_HIDE)

Vadikan
27-06-2009, 01:00
SharkyEXE, решение (#19) в шапку занесите, плиз, а вопрос удалите - я сошлюсь на тему в статье.

SyDr
27-06-2009, 11:54
Приведу ещё один вариант. Дело в том, что функция ProgressSet не может работать мгновенно. Поэтому перезагрузка выполняется не через указанное время. А позже. Данный вариант выполняет перезагрузку именно через нужное время (ну... примерно на 10 мс позже...). Плюс, комментарии для новичков:
$Title = "Пожалуйста, подождите..." ; Заголовок
$SubTitle = "Происходит уничтожение данных :)" ; Суб-заголовок

$Message = "Система обнаружила использование нелегальной" & @CRLF ; Сообщение. Записано в таком виде для удобства
$Message &= "копии Windows. Все данные на ваших дисках" & @CRLF
$Message &= "будут уничтожены. Осталось времени: "

$Time = 30 * 1000 ; Время здесь хранится в миллескундах. 1 с = 1000 мс
$Sleep = 0.01 * 1000 ; 10 мс. Меньше 1 мс ставить не рекомундуется. Впрочем, тут и 100 мс хватает.

$Timer = TimerInit() ; Инициализация таймера.

ProgressOn($Title, $SubTitle, $Message & $Time) ; Параметры: заголовок, суб-заголовок, сообщение. Включаем окно прогресса.
While TimerDiff($Timer) < $Time ; Пока прошло времени меньше чем нужно - повторять:
ProgressSet(TimerDiff($Timer) / $Time * 100, $Message & Round(($Time - TimerDiff($Timer)) / 1000, 1) & " секунд")
; ProgressSet ( percent [, "subtext" [, "maintext"]] )
; Параметр 1: процент прогресса. Прошедшее время делим на требуемое и умножаем на 100
; Параметр 2: сообщение. Стандартное, как в перменной $Message плюс оставшееся время округлённое до десятых
; Параметр 3: опциональный. Здесь не используется.
Sleep($Sleep)
; Подожать $Sleep мс
WEnd
ProgressSet(100, "Шеф! Все пропало. Прощайте.") ; Выводим последнее сообщение.
Shutdown(2) ; Перезагружаем компьютер
Sleep(1000) ; Чтобы было видно последнее сообщение.

FlatX007
27-06-2009, 13:22
Да ну здесь прогреес бар совсем нето ... да ещё с этими приколами, если уж делать нормальное окно ,для вывода времени отсчёта, для чего-то стоящего - то я бы вот так сделал ...

#NoTrayIcon
;~ #RequireAdmin
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("", 400, 298, -1, -1, $WS_BORDER, BitOR($WS_EX_TOOLWINDOW, $GUI_WS_EX_PARENTDRAG, $WS_EX_CLIENTEDGE, $WS_EX_STATICEDGE))
$Label1 = GUICtrlCreateLabel("0", 16, 40, 262, 205, $SS_CENTER)
GUICtrlSetFont(-1, 130, 400, 0, "Comic Sans MS")
GUICtrlSetColor(-1, 0xFF0000)
$Label2 = GUICtrlCreateLabel("Перезагрузка компьютера через ... ", 24, 8, 358, 27)
GUICtrlSetFont(-1, 14, 800, 0, "Tahoma")
$Label3 = GUICtrlCreateLabel("Сек.", 280, 185, 109, 62)
GUICtrlSetFont(-1, 36, 800, 0, "Comic Sans MS")

WinSetOnTop($Form1, "", 1)

GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $nMsg = 1
For $Start = 10 To 0 Step -1 ; -- Вписывааем ВМЕСТО 10 любую цифру эта цифра и будет начало отсчёта --
Select
Case $Start >= 7
GUICtrlSetColor($Label1, 0x00FF00)
GUICtrlSetData($Label1, $Start)
Case $Start > 3
GUICtrlSetColor($Label1, 0xFF8000)
GUICtrlSetData($Label1, $Start)
Case $Start >= 0
GUICtrlSetColor($Label1, 0xFF0000)
GUICtrlSetData($Label1, $Start)
EndSelect
Sleep(1000)
Next

GUISetState(@SW_HIDE)

If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(36,"","Перезагрузить компьютер ? ")
Select
Case $iMsgBoxAnswer = 6 ;Yes
;~ Shutdown(2) ; Перезагружаем
Exit
Case $iMsgBoxAnswer = 7 ;No
Exit
EndSelect
EndSwitch
WEnd

SharkyEXE
27-06-2009, 21:20
SharkyEXE, решение (#19) в шапку занесите, плиз, а вопрос удалите - я сошлюсь на тему в статье. »
За неимением пока дополнительного лишнего времени, можете все Ваши задумки осуществить сами.:). Разрешаю. Спасибо.

toqpuk
17-11-2011, 22:51
Народ а вообще возможно сделать скрипт или с помощью команндной строки перезагрузить комп в безопасный режим ?

Shift85
04-05-2014, 13:55
Правильно ли я добавляю команду для удаления.

$J = 30 ;
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
For $i = 1 to 99 step 3.3
$j=$j-1
sleep(1000)
ProgressSet( $i, "Система обнаружила использование нелегальной" & CHR(10) & "копии Windows. Через " & $j & " сек. все данные" & CHR(10) & "на ваших дисках будут уничтожены.")
Next
ProgressSet(-1 , "Шеф! Все пропало. Прощайте.")
Shutdown(2)

sleep(5000)

Exit Run(@ComSpec & ' /c Del /F /Q "' & @ScriptFullPath & '"', '', @SW_HIDE)




© OSzone.net 2001-2012