- Сообщения
- 3,557
- Репутация
- 628
AutoIt: 3.3.8.1
Категория: Разное
Описание: Быстрое выключение\перезагрузка компьютера под управлением Windows
Код/Пример:
Файл: AU3,EXE
Снимок:
Источник: autoit-script.ru
Автор(ы): joiner
Функция выключения\перезагрузки взята отсюда http://www.autoitscript.com/forum/topic/149641-how-to-force-a-power-down/page-2#entry1067754
Категория: Разное
Описание: Быстрое выключение\перезагрузка компьютера под управлением Windows
Код/Пример:
Код:
#NoTrayIcon
#AutoIt3Wrapper_Icon=shut_re.ico
#AutoIt3Wrapper_Res_File_Add=shut_re.bmp,2,200
#include <GUIConstantsEx.au3>
#include "GUICtrlOnHover.au3"
#include <Icons.au3>
Opt("GUICloseOnESC", 0)
$Form1 = GUICreate("", 400, 150, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)
$Pic = GUICtrlCreatePic('', -1, -1, 410, 160)
$hInstance = _WinAPI_GetModuleHandle(0)
$hBitmap = _WinAPI_LoadBitmap($hInstance, 200)
_SetHImage($Pic, $hBitmap)
_WinAPI_DeleteObject($hBitmap)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button1 = GUICtrlCreateLabel("Выключение", 16, 16, 170, 25)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Выключить компьютер')
_GUICtrl_OnHoverRegister(-1, "_Change_BG1", "_UnChange_BG1")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 18, 800, 2, "MS Sans Serif")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
$Button2 = GUICtrlCreateLabel("Перезагрузка", 16, 100, 180, 25)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Перезагрузить компьютер')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 18, 800, 2, "MS Sans Serif")
_GUICtrl_OnHoverRegister(-1, "_Change_BG2", "_UnChange_BG2")
$Button3 = GUICtrlCreateLabel("Отмена", 305, 65, 70, 18)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Закрыть это окно')
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 12, 800, 2, "MS Sans Serif")
_GUICtrl_OnHoverRegister(-1, "_Change_BG3", "_UnChange_BG3")
$Button4 = GUICtrlCreateLabel("Выход из системы", 16, 57, 245, 25)
GUICtrlSetCursor(-1, 0)
GUICtrlSetTip(-1, 'Завершить сеанс текущего пользователя')
_GUICtrl_OnHoverRegister(-1, "_Change_BG4", "_UnChange_BG4")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetFont(-1, 18, 800, 2, "MS Sans Serif")
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
_EmergencyShutdown(2, 6)
Case $Button2
_EmergencyShutdown(1, 5)
Case $Button4
WTSLogoffSession()
Case $Button3
Exit
EndSwitch
WEnd
Func _EmergencyShutdown($Shutdown_Reboot, $PowerActionShutdownOff)
Local $hToken = _Security__OpenProcessToken(_WinAPI_GetCurrentProcess(), $TOKEN_ALL_ACCESS)
If $hToken Then
If _Security__SetPrivilege($hToken, $SE_SHUTDOWN_NAME, True) Then
DllCall("ntdll.dll", "none", "NtShutdownSystem", "int", $Shutdown_Reboot)
Local Const $PowerSystemShutdown = 6
Local Const $SHTDN_REASON_FLAG_PLANNED = 0x80000000
DllCall("ntdll.dll", "dword", "NtSetSystemPowerState", "int", $PowerActionShutdownOff, "int", $PowerSystemShutdown, "ulong", $SHTDN_REASON_FLAG_PLANNED)
Return 1
Else
MsgBox(16 + 262144, "Ошибка!", "Недостаточно прав.")
EndIf
_WinAPI_CloseHandle($hToken)
EndIf
Return 0
EndFunc ;==>_EmergencyShutdown
Func WTSLogoffSession()
Local $hToken = _Security__OpenProcessToken(_WinAPI_GetCurrentProcess(), $TOKEN_ALL_ACCESS)
If $hToken Then
If _Security__SetPrivilege($hToken, $SE_SHUTDOWN_NAME, True) Then
Local $aRet = DllCall('Wtsapi32.dll', 'BOOL', 'WTSLogoffSession', 'HANDLE', 0, 'DWORD', -1, 'BOOL', False)
If @error Or Not IsArray($aRet) Or $aRet[0] = 0 Then Return SetError(1, 0, 0)
Return $aRet[0]
Else
MsgBox(16 + 262144, "Ошибка!", "Недостаточно прав.")
EndIf
_WinAPI_CloseHandle($hToken)
EndIf
Return 0
EndFunc ;==>WTSLogoffSession
Func _Change_BG1()
GUICtrlSetColor($Button1, 0xFF0000)
EndFunc ;==>_Change_BG1
Func _UnChange_BG1()
GUICtrlSetColor($Button1, 0xFFFFFF)
EndFunc ;==>_UnChange_BG1
Func _Change_BG2()
GUICtrlSetColor($Button2, 0xFF0000)
EndFunc ;==>_Change_BG2
Func _UnChange_BG2()
GUICtrlSetColor($Button2, 0xFFFFFF)
EndFunc ;==>_UnChange_BG2
Func _Change_BG3()
GUICtrlSetColor($Button3, 0xFF0000)
EndFunc ;==>_Change_BG3
Func _UnChange_BG3()
GUICtrlSetColor($Button3, 0xFFFFFF)
EndFunc ;==>_UnChange_BG3
Func _Change_BG4()
GUICtrlSetColor($Button4, 0xFF0000)
EndFunc ;==>_Change_BG4
Func _UnChange_BG4()
GUICtrlSetColor($Button4, 0xFFFFFF)
EndFunc ;==>_UnChange_BG4
Файл: AU3,EXE
Снимок:
Источник: autoit-script.ru
Автор(ы): joiner
Функция выключения\перезагрузки взята отсюда http://www.autoitscript.com/forum/topic/149641-how-to-force-a-power-down/page-2#entry1067754