Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для SyDr

Старожил


Сообщения: 215
Благодарности: 62

Профиль | Отправить PM | Цитировать


Приведу ещё один вариант. Дело в том, что функция 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) ; Чтобы было видно последнее сообщение.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:54, 27-06-2009 | #23