################################################################################################################
# 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
Comments
0 B
|👍
/👎
0 B
|👍
/👎