Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################################################################
- # http://autoit-script.ru/autoit3_docs/userappendix/AutoIt3Wrapper.htm
- # http://autoit-script.ru/threads/kompiljacija-skripta-maksimalno-szhatie.8948/#post-60159
- # НЕ использовать X64 версию AutoIt3_x64 или AUT2EXE_x64
- #AutoIt3Wrapper_UseX64=n
- # Уровень сжатия скомпилированного файла *.exe: минимальный=0, максимальный=4
- #AutoIt3Wrapper_Compression=0
- # Сжатие скомпилированного файла *.exe
- #AutoIt3Wrapper_UseUpx=n
- # Имя скомпилированного файла *.exe
- # #AutoIt3Wrapper_OutFile=!MS_W_7_Twk.exe
- #AutoIt3Wrapper_OutFile=montOFF_Autoit.exe
- # Имя файла используемой иконки скомпилированного файла *.exe
- # #AutoIt3Wrapper_Icon=icon.ico
- # #AutoIt3Wrapper_Icon=transparent.ico
- #AutoIt3Wrapper_Icon=offmon.ico
- ################################################################################################################
- #include <GUIConstantsEx.au3>
- #include <SendMessage.au3>
- #include <WinAPISys.au3>
- #include <WinAPIvkeysConstants.au3>
- ; #include <HotKey.au3>
- Global $iOff = 1
- Global $iTimeout = 60
- $iMarker = 1
- $message = "Monitor budet potushen avtomaticheski posle" & " " & $iTimeout & " " & "sek.!"
- ; #Include <Timers.au3>
- ; Global $interval_timer, $counter
- ; HotKeySet("{ESC}", "_terminate")
- ; HotKeySet("{ESC}", "_terminate2")
- ; HotKeySet("{ESC}", "_terminate3")
- HotKeySet("{ESC}", "_terminate4")
- ;HotKeySet('{Esc}', _Exit)
- Opt('TrayMenuMode', 3)
- Opt('TrayOnEventMode', 1)
- TraySetClick(16)
- ; TrayItemSetOnEvent(TrayCreateItem('Выход/Закрыть'), _Exit)
- TrayItemSetOnEvent(TrayCreateItem('BbIXOD'), _Exit)
- TrayItemSetOnEvent(TrayCreateItem('PoraCuTb 3kpaH'), _Monitor_Switch_Second)
- TraySetState(1)
- _Monitor_Switch(True)
- Sleep (1000)
- ; Global Const $VK_ESCAPE = 0x1B
- ; Global Const $VK_F12 = 0x7B
- Global $T1mer = 0
- Global $T2mer = 0
- While 1
- If $iOff Then
- _Monitor_Switch(True)
- ; ElseIf Not $iOff And _WinAPI_GetIdleTime() >= $iTimeout * 1000 Then
- ; ElseIf Not $iOff And (TimerDiff($T2mer) >= $iTimeout * 1000) Then
- ElseIf Not $iOff And ($T2mer) And (TimerDiff($T2mer) >= $iTimeout * 1000) Then
- ; $T2mer = 0
- ; $T2mer = TimerInit()
- $iOff = 1
- SplashOff()
- ProgressOff()
- Sleep (5000)
- ; ElseIf $iOff = 0 Then
- ElseIf $iOff = 0 and $iMarker = 1 Then
- _Msg()
- $iMarker = 0
- EndIf
- Sleep(10)
- WEnd
- Func _terminate4()
- For $i = $VK_ESCAPE To $VK_ESCAPE
- If _WinAPI_GetAsyncKeyState($i) < 0 Then
- If ($T1mer) And (TimerDiff($T1mer) < 250) Then
- MsgBox("","","double tap detected")
- $T1mer = 0
- $T2mer = 0
- _Monitor_Switch(False)
- $iOff = 0
- $iMarker = 1
- EndIf
- EndIf
- Next
- $T1mer = TimerInit()
- $T2mer = TimerInit()
- EndFunc ;==>Message
- Func _Monitor_Switch($bOff)
- Local $hWnd = WinGetHandle('[CLASS:Progman]')
- Local Const $WM_SYSCOMMAND = 274
- Local Const $SC_MONITORPOWER = 61808
- Local Const $iOff = 2, $iOn = -1
- _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, ($bOff ? $iOff : $iOn))
- EndFunc
- Func _Monitor_Switch_Second()
- SplashOff()
- ProgressOff()
- Sleep (5000)
- $iOff = 1
- _Monitor_Switch(True)
- ; If $iOff = 0 Then
- ; _Monitor_Switch(True)
- ; MsgBox(0,"","")
- ; $iOff = 1
- ; EndIf
- EndFunc
- Func _Exit()
- _Monitor_Switch(False)
- Exit
- EndFunc
- Func _Msg()
- $Title = "Пожалуйста, подождите..." ; Заголовок
- $SubTitle = "Происходит уничтожение данных :)" ; Суб-заголовок
- $Message = "Монитор будет потушен автоматически после" & @CRLF ; Сообщение. Записано в таком виде для удобства
- $Message &= ""
- ; $Message = "Все данные на ваших дисках будут уничтожены." & @CRLF ; Сообщение. Записано в таком виде для удобства
- ; $Message &= "Монитор будет потушен автоматически после" & @CRLF
- ; $Message &= ""
- ; $Message = "Система обнаружила использование нелегальной" & @CRLF ; Сообщение. Записано в таком виде для удобства
- ; $Message &= "копии Windows. Все данные на ваших дисках" & @CRLF
- ; $Message &= "будут уничтожены." & @CRLF
- ; $Message &= "Монитор будет потушен автоматически после" & @CRLF
- ; $Message &= "" & @CRLF
- $Time = $iTimeout * 1000 ; Время здесь хранится в миллескундах. 1 с = 1000 мс
- $Sleep = 0.01 * 1000 ; 10 мс. Меньше 1 мс ставить не рекомундуется. Впрочем, тут и 100 мс хватает.
- $Timer = TimerInit() ; Инициализация таймера.
- ProgressOn($Title, $SubTitle, $Message & $Time) ; Параметры: заголовок, суб-заголовок, сообщение. Включаем окно прогресса.
- ; ProgressOn($Title, $SubTitle, $Message & $Time, -1, -1, 16) ; Параметры: заголовок, суб-заголовок, сообщение. Включаем окно прогресса. ; окно может быть перемещено
- While TimerDiff($Timer) < $Time and $iOff = 0 ; Пока прошло времени меньше чем нужно - повторять:
- 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, "Шеф! Все пропало. Прощайте.") ; Выводим последнее сообщение.
- ; Sleep(1000) ; Чтобы было видно последнее сообщение.
- ; ProgressOff()
- EndFunc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement