Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Перезагрузка компьютера (http://forum.oszone.net/showthread.php?t=143478)

SharkyEXE 25-06-2009 17:49 1151603

Перезагрузка компьютера
 
Вступление

1) Свел все рабочие коды-примеры скриптов для перезагрузки ПК после определенного таймаута на основе AutoIt из данной темы на форуме, разбросанным по страницам, в одно данное сообщение.

2) Обязательно к ознакомлению в конце данного сообщения Примечание!!!.

Блок готовых рабочих кодов-примеров скриптов для перезагрузки ПК после определенного таймаута на основе AutoIt

1) Таймаут перед тем, как компьютер перезагрузиться-30 секунд (полностью рабочая версия кода-примера скрипта для перезагрузки ПК после определенного таймаута на основе AutoIt, получившаяся благодаря коррекции кода-примера скрипта, приведенного здесь Перезагрузка компьютера из командной строки)
Код:

$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)

Благодарность выражаеться пользователю Sylver Dragon

2) Таймаут перед тем, как компьютер перезагрузиться-24 секунды
Код:

Local $i, $j=24

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

Sleep(5000)

Благодарность выражаеться пользователю proxy

3) Таймаут перед тем, как компьютер перезагрузиться-100 секунд
Код:

$i = 0
$iI = 100
;Отображаем окно демонстрации развития процесса
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 step 1 ; Задаём цикл от 1 до 100 при повторении цикла к $i + 1 о чём свидетельствует step 1
sleep(1000) ; Пауза 1 сек
; Установить позицию и текст для созданного ранее окна отображения развития процесса.
ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ; При повторении цикла отнимаем от $iI один  т.е. 99 98 97 96 ...
Next ; Конец цикла т.е. $i = 100
ProgressSet(100 , "Шеф! Все пропало. Прощайте.") ; Тут надо вписать процентовку прогресс бара ....те 100%
sleep(5000)
Shutdown(2) ; перезагружаем

Благодарность выражаеться пользователю FlatX007

4) Таймаут перед тем, как компьютер перезагрузиться-10 секунд
Код:

$i = 0
$iI = 10
;Отображаем окно демонстрации развития процесса
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 step 9.5 ; Задаём цикл от 1 до 100 при повторении цикла к $i + 1 о чём свидетельствует step 9.5
sleep(1000) ; Пауза 1 сек
; Установить позицию и текст для созданного ранее окна отображения развития процесса.
ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ; При повторении цикла отнимаем от $iI один  т.е. 99 98 97 96 ...
Next ; Конец цикла т.е. $i = 100
ProgressSet(100 , "Шеф! Все пропало. Прощайте.") ; Тут надо вписать процентовку прогресс бара ....те 100%
sleep(5000)
Shutdown(2) ; перезагружаем

Благодарность выражаеться пользователю FlatX007

5) Таймаут перед тем, как компьютер перезагрузиться-10 секунд. Доп. инфо см. по следующей ссылке: http://forum.oszone.net/post-1151716-8.html
Код:

$i = 0
$iI = 100
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " &  Round($iI / 10) & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 Step 1
sleep(100) ; делим $iI на 10 и округляем до целого числа = 10 9 8 7 6 ...
ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & Round($iI / 10) & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ;
Next ;
ProgressSet(100 , "Шеф! Все пропало. Прощайте.")
sleep(1000)
Shutdown(2) ; перезагружаем

Благодарность выражаеться пользователю FlatX007

6) Таймаут перед тем, как компьютер перезагрузиться-30 секунд
Код:

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

Благодарность выражаеться пользователю Sylver Dragon

7) Таймаут перед тем, как компьютер перезагрузиться-30 секунд
Код:

$s = 30
ProgressOn('Пожалуйста, подождите...', 'Происходит уничтожение данных :)', 'Система обнаружила использование нелегальной' & @CRLF & 'копии Windows. Через ' & $s & ' сек. все данные' & @CRLF & 'на ваших дисках будут уничтожены.')
For $i=1 To 100 Step 100/$s
    Sleep(1000)
    ProgressSet($i, 'Система обнаружила использование нелегальной' & @CRLF & 'копии Windows. Через ' & $s & ' сек. все данные' & @CRLF & 'на ваших дисках будут уничтожены.')
Next
ProgressSet(100, 'Шеф! Все пропало. Прощайте.')
Sleep(1000)
Shutdown(2)

Благодарность выражаеться пользователям Sylver Dragon (оригинал кода-см. пример 7)) и proxy (коррекция кода)

8) Таймаут перед тем, как компьютер перезагрузиться-5 секунд. Улучшена структура скрипта, секунды теперь отображаються как десятичное число, т. е например 0.4 секунды, а не как во всех предыдущих примерах скриптов-1 секунда, 2 секунды/ В данном примере прогресс бар идет быстрее за счет меньшей задержки между счетчиком цикла, т. е. за счет значения параметра $Sleep = 100. В примерах скриптов выше это значение задержки, пусть и реализовано может и по другому, было равным 1000 (1 секунда)
Код:

$Title = "Пожалуйста, подождите..."
$SubTitle = "Происходит уничтожение данных :)"
$Message  = "Система обнаружила использование нелегальной" & @CRLF
$Message &= "копии Windows. Все данные на ваших дисках" & @CRLF
$Message &= "будут уничтожены. Осталось времени: "
$Time = 5000
$Sleep = 100

ProgressOn($Title, $SubTitle, $Message & $Time)
For $I = 0 to $Time Step $Sleep
    ProgressSet($I / $Time * 100, $Message & ($Time - $I) / 1000 & " секунд")
    Sleep($Sleep)
Next
ProgressSet(100, "Шеф! Все пропало. Прощайте.")
Shutdown(2)
Sleep(1000)

Благодарность выражаеться пользователю Sylver Dragon

9) Таймаут перед тем, как компьютер перезагрузиться-30 секунд. Доп. инфо см. по следующей ссылке: http://forum.oszone.net/post-1152952-23.html
Код:

$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) ; Чтобы было видно последнее сообщение.

Благодарность выражаеться пользователю Sylver Dragon

10) Таймаут перед тем, как компьютер перезагрузиться-10 секунд. Доп. инфо см. по следующей ссылке: http://forum.oszone.net/post-1153010-24.html
Код:

#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

Благодарность выражаеться пользователю FlatX007

Кусок кода, позволяющий создать самоудаляющийся скрипт для перезагрузки ПК после определенного таймаута на основе AutoIt после завершении отработки скрипта

http://forum.oszone.net/post-1152147-21.html

Благодарность выражаеться пользователю proxy

Примечание!!!

1) Внимание. Все вышеуказанные коды скриптов для перезагрузки ПК-абсолютно рабочие. Осталось только скопировать содержимое одного из вышеуказанных кодов, вставить, сохранить, запустить-все работает.

2) Чтобы тестировать их выполнение, делать версию под себя, изменяя параметры таймаута до перезагрузки, текст сообщения и прочее, рекомендую, как и делал пользователь FlatX007, в скриптах изменять одну строчку.

Например:

было
Код:

Shutdown(2)
стало
Код:

;~ Shutdown(2)
Так у Вас при тестировании/отладки/"игры" с параметрами скрипта, его пробовании в работе, будет работать все, за исключением самой главной функции скрипта-отправки ПК в перезагруз, т. к. строка, отвечающая за это, т. е. Shutdown(2) закомментированна (видоизменена) на ;~ Shutdown(2) и следовательно, она эта строка будет не работать до тех пор, пока не станет прежней, т. е. Shutdown(2).

При получении финального кода скрипта, меняем обратно значение строки:

было
Код:

;~ Shutdown(2)
стало
Код:

Shutdown(2)
сохраняем еще раз полученный скрипт с тем же именем или с новым именем. Все. Будьте осторожны! С данного момента скрипт становиться абсолютно рабочим и в связи с тем, что строка, отвечающая за перезагруз ПК стала рабочая (см. изменение строки немного выше), при выполнении данного скрипта ПК будет уходить в перезагрузку через указанный таймаут времени.

FlatX007 25-06-2009 18:50 1151646

Код:

$i = 0
$iI = 100
;Отображаем окно демонстрации развития процесса
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 step 1 ; Задаём цикл от 1 до 100 при повторении цикла к $i + 1 о чём свидетельствует step 1
sleep(1000) ; Пауза 1 сек
; Установить позицию и текст для созданного ранее окна отображения развития процесса.

ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ; При повторении цикла отнимаем от $iI один  т.е. 99 98 97 96 ...
Next ; Конец цикла т.е. $i = 100
ProgressSet(100 , "Шеф! Все пропало. Прощайте.")
sleep(5000)
;~ Shutdown(2) ; перезагружаем


proxy 25-06-2009 18:52 1151648

вот так должно работать:
читать дальше »
Код:

Local $i, $j=24

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

Sleep(5000)

Для запуска необходимо:
1. Скопировать код в SciTE Script Editor
2. Далее в реадкторе сохранить файл с расширением .au3
3.1 Для запуска через редактор SciTE: нажать клавишу F5, или верхнее меню > Tools > GO
3.2 Для компиляции скрипта (создать .exe файл) через редактор SciTE: нажать клавишу Ctrl+F7 > Compile Script, или верхнее меню > Tools > Compile

SyDr 25-06-2009 18:56 1151652

Добавь до этих строк строчку:
$J = 30

SharkyEXE 25-06-2009 19:19 1151674

{delete}

FlatX007 25-06-2009 19:23 1151676

Код:

$i = 0
$iI = 10
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 step 10 ;
sleep(1000) ;
ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & $iI & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ;
Next ;
ProgressSet(100 , "Шеф! Все пропало. Прощайте.") ; Тут надо вписать процентовку прогресс бара ....те 100%
sleep(5000)
;~ Shutdown(2) ; перезагружаем


SharkyEXE 25-06-2009 19:46 1151700

{delete}

FlatX007 25-06-2009 20:00 1151716

Так прогресс бар небудет "прыгать"

Код:

$i = 0
$iI = 100
ProgressOn("Пожалуйста, подождите...", "Происходит уничтожение данных :)", "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " &  Round($iI / 10) & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
For $i = 1 to 100 Step 1
sleep(100) ;
;                                                                                                  делим $iI на 10 и округляем до целого числа = 10 9 8 7 6 ...

ProgressSet($i, "Система обнаружила использование нелегальной" & @CRLF & "копии Windows. Через " & Round($iI / 10) & " сек. все данные" & @CRLF & "на ваших дисках будут уничтожены.")
$iI = $iI - 1 ;
Next ;
ProgressSet(100 , "Шеф! Все пропало. Прощайте.")
sleep(1000)
;~ Shutdown(2) ; перезагружаем


SharkyEXE 25-06-2009 20:10 1151723

{delete}

proxy 25-06-2009 20:32 1151736

Цитата:

Благодарность выражаеться пользователю ».......
Coool ! Чувствую себя серебренным призером :yahoo:

SharkyEXE, :spy: а медалька будет?

SharkyEXE 25-06-2009 20:43 1151745

Цитата:

Цитата proxy
SharkyEXE, а медалька будет? »

Большое Вам: FlatX007, proxy, Sylver Dragon искреннее спасибо, что Вы помогли мне в решении маленькой проблемы. А насчет медали, proxy Вы получились как 2й пользователь, кто подсказал мне правильный код скрипта AutoIt для перезагруза ПК, вот как-бы вы и получились серебряным призером в плане помощи мне с решением моей проблемы:).
PS. Собираю дистрибут, а стандартный способ ухода ПК в перезагруз при помощи shutdown.exe мне показался хорошим, пока не наткнулся на скрипт AutoIt, позволяющий также послать ПК в перезагруз, только можно подшутить при помощи перезагруза благодаря этому сообщению при выполнении скрипта AutoIt:
:)
PPS. Очень приятно видеть, как одни пользователи имеют желание и помогают другим начинающим пользователям в решении их проблем. :good:

proxy 25-06-2009 20:58 1151760

Цитата:

Цитата SharkyEXE
PPS. Очень приятно видеть, как одни пользователи имеют желание и помогаю другим начинающим пользователям в решении их проблем. »

На удивление, это хорошее побуждение, очень здорово сопутствует всему рус-комьюнити AutoIt.
Имею ввиду, народ реально предлагает решение проблемы, а не "погугли" и т.д. ....
И чувствую, это как раз завязанно на "двигающих" и развивающих людей этого сообщества.

SyDr 25-06-2009 21:21 1151773

Код:

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

Измени $J - изменится и всё остальное)))

proxy 25-06-2009 22:00 1151797

подправил дизайн у Sylver Dragon-на:
Код:

$s = 30
ProgressOn('Пожалуйста, подождите...', 'Происходит уничтожение данных :)', 'Система обнаружила использование нелегальной' & @CRLF & 'копии Windows. Через ' & $s & ' сек. все данные' & @CRLF & 'на ваших дисках будут уничтожены.')
For $i=1 To 100 Step 100/$s
    Sleep(1000)
    ProgressSet($i, 'Система обнаружила использование нелегальной' & @CRLF & 'копии Windows. Через ' & $s & ' сек. все данные' & @CRLF & 'на ваших дисках будут уничтожены.')
Next
ProgressSet(100, 'Шеф! Все пропало. Прощайте.')
Sleep(1000)
;~ Shutdown(2)


Цитата:

Цитата Sylver Dragon
Измени $J - изменится и всё остальное))) »

Морфиус - ты?

SyDr 25-06-2009 23:08 1151857

Код:

$Title = "Пожалуйста, подождите..."
$SubTitle = "Происходит уничтожение данных :)"
$Message  = "Система обнаружила использование нелегальной" & @CRLF
$Message &= "копии Windows. Все данные на ваших дисках" & @CRLF
$Message &= "будут уничтожены. Осталось времени: "
$Time = 5000
$Sleep = 100

ProgressOn($Title, $SubTitle, $Message & $Time)
For $I = 0 to $Time Step $Sleep
    ProgressSet($I / $Time * 100, $Message & ($Time - $I) / 1000 & " секунд")
    Sleep($Sleep)
Next
ProgressSet(100, "Шеф! Все пропало. Прощайте.")
;~ Shutdown(2)
Sleep(1000)

:tongue:


Цитата:

PPS. Очень приятно видеть, как одни пользователи имеют желание и помогаю другим начинающим пользователям в решении их проблем.
На самом деле чем больше повторяешь простое, тем меньше потом надо лезть в справку на сложном. А это значит, что помогая кому-то - мы в первую очередь помогаем себе.

Цитата:

Цитата proxy
Морфиус - ты? »

Нет :), не я

SharkyEXE 26-06-2009 00:54 1151944

{delete}

FlatX007 26-06-2009 04:09 1151996

Такой большой мануал .... я в шоке :up

semiono 26-06-2009 04:17 1152001

Было такое уже, Creat0R помогал. Моё же здесь было многократное тупое повторение _SendMessage
Однако, так работает более стабильно :)
Чем больше тем лучше, ибо не всякая система просто так перезагрузиться ;-

Код:

#include <WindowsConstants.au3>
#include <SendMessage.au3>

Run("taskmgr.exe")

WinWait("[CLASS:#32770;REGEXPTITLE:.*Windows.*]", "", 5)

$hTskMgr = WinGetHandle("[CLASS:#32770;REGEXPTITLE:.*Windows.*]")
If Not WinExists($hTskMgr) Then Exit 1

_SendMessage($hTskMgr, $WM_COMMAND, 4005, 0)

_SendMessage($hTskMgr, $WM_COMMAND, 4005, 0)

_SendMessage($hTskMgr, $WM_COMMAND, 4005, 0)


SharkyEXE 26-06-2009 07:44 1152031

{delete}

SharkyEXE 26-06-2009 10:33 1152108

Да, совсем забыл. Как сделать, чтобы после выполнения скрипта, переведенного в ехе файл:
Код:

$Title = "Пожалуйста, подождите..."
$SubTitle = "Происходит уничтожение данных :)"
$Message  = "Система обнаружила использование нелегальной" & @CRLF
$Message &= "копии Windows. Все данные на ваших дисках" & @CRLF
$Message &= "будут уничтожены. Осталось времени: "
$Time = 5000
$Sleep = 100

ProgressOn($Title, $SubTitle, $Message & $Time)
For $I = 0 to $Time Step $Sleep
    ProgressSet($I / $Time * 100, $Message & ($Time - $I) / 1000 & " секунд")
    Sleep($Sleep)
Next
ProgressSet(100, "Шеф! Все пропало. Прощайте.")
Shutdown(2)
Sleep(1000)

но перед перезагрузкой ПК этот скрипт-ехе файл удалялся, чтобы в системе не оставалось его? Для батников в конце дописываешь
Код:

Del /F /Q %0
и файл батника автоматически самоудаляеться с жесткого диска после своей отработки. Если ли такое для скриптов, их самоудаление после отработки? Спасибо.

proxy 26-06-2009 11:18 1152147

Цитата:

Цитата SharkyEXE
но перед перезагрузкой ПК этот скрипт-ехе файл удалялся, »

все тот же Bat - необходимо дописать в самом конце скрипта:
Код:

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

Vadikan 27-06-2009 01:00 1152821

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

SyDr 27-06-2009 11:54 1152952

Приведу ещё один вариант. Дело в том, что функция 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 1153010

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

Код:

#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 1153357

Цитата:

Цитата Vadikan
SharkyEXE, решение (#19) в шапку занесите, плиз, а вопрос удалите - я сошлюсь на тему в статье. »

За неимением пока дополнительного лишнего времени, можете все Ваши задумки осуществить сами.:). Разрешаю. Спасибо.

toqpuk 17-11-2011 22:51 1797563

Народ а вообще возможно сделать скрипт или с помощью команндной строки перезагрузить комп в безопасный режим ?

Shift85 04-05-2014 13:55 2346942

Правильно ли я добавляю команду для удаления.

Код:

$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)



Время: 03:40.

Время: 03:40.
© OSzone.net 2001-