Sistema Vista, ¡cómo usar el Bloc de notas para escribir código de apagado programado! ¡Quieres un tipo de archivo bat!
Llamar a Shell ("shutdown -s -f ")' cerrar.
Llamar al reinicio del Shell ("shutdown -r -f ")".
O
Establecer estado
SetSuspendState
¿Se admite la hibernación?
IsPwrHibernateAllowed
¿Es compatible con el modo de espera?
IsPwrSuspendAllowed
Mire la sección de administración de energía de MSDN
Cold Moon
Dentro del formulario
Coloque un control de tiempo, dos controles de etiqueta y un control de cuadro de estilo, así como dos botones de opción y dos botones de comando.
Opción explícita
Dim txtTime 'Ahorra tiempo de escritura.
' Dim nowTime 'Ahorra tiempo real.
"Dim Old Time" guarda la hora de inicio.
Privado subform_Load()
Me.caption= "Cerrar periódicamente"
Me.label1.caption= "Hora de cierre:"
p>Yo. Option1.caption= "Apagar a la hora especificada (formato de hora: 00:00:00)"
Yo. Option2.caption= "Retrasar el apagado a la hora especificada"
Me.command1.caption= "Aceptar "
Me.command2.caption= "Cancelar"
I. texto 1 = obtener configuración(" cerrar ventanas ", " Opciones ", " ShutDownTime ", " 1:00 ")
¡Yo! Temporizador 1.interval=1000
Conector final
Subcomando privado 1_Click()
Tiempo anterior=tiempo
tUse IsData La función determina el formato de hora de entrada.
MsgBox "El formato de hora que ingresó es incorrecto, ¡modifíquelo!",, "Incorrecto"
ElseIf opción 1. Vale la pena
txtTime = TimeValue(Text1.Text)
Temporizador 1. Habilitado = Verdadero 'Iniciar temporizador.
Yo. WindowState = 1 'Minimiza el formulario.
Yo. Caption="Apagado-inicio programado"
ElseIf opción 2. Eso vale la pena
Yo. EstadoVentana = 1
i. Caption="Apagado-pausa periódica"
Terminará si...
Finalizar conector
Subcomando privado 2_Click()
Desinstalar Siguiente yo
Conector final
Subformulario privado_Descargar (cancelar a número entero)
Guardar configuración "Cerrar ventana", "Opciones", "Cerrar hora de apagado" , i. Texto1
Conector final
Subtemporizador privado 1_Timer()
nowTime = tiempo
Me.label2.Caption = tiempo p> p>
Si opción 1.
Eso vale la pena
Si DateDiff("s ", nowTime, txt time) lt; = 0 y DateDiff("s ", nowTime, txtTime) >= -60 entonces 'usa la función DateDiff para determinar si Ha llegado Es hora.
ApagarPC verdadero
Temporizador 1. enable = false
Fin si
Fin si
Fin de ajuste
En el módulo estándar.
Constante privada EWX_LOGOFF = 0
Constante pública EWX_SHUTDOWN = 1
Const pública EWX _ POWEROFF = 8 Este parámetro no se proporciona en el navegador API integrado . Vale la pena señalar que sin este parámetro, Win2kServer morirá en la pantalla de apagado.
Constante privada EWX_REBOOT = 2
Constante privada EWX_FORCE = 4
Constante privada TOKEN _ ADJUST _ PRIVILEGES = ampH20
Constante privada TOKEN _ QUERY = ampH8
Constante privada SE _ PRIVILEGE _ ENABLED = amp Deuterio
Constante privada ANYSIZE_ARRAY = 1
Constante privada VER _PLATFORM_WIN32_NT = 2
Tipo OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion tiene la misma longitud
dwMinorVersion tiene la misma longitud
dwBuildNumber es Long
p>dwPlatformId tiene la misma longitud
szCSDVersion que la cadena * 128
Tipo final
Etiqueta LUID
La parte inferior tiene la misma longitud
La parte alta tiene la misma longitud
Tipo final
Escribe atributos LUID _ y _
pLuid es Luid
Atributo para long
Tipo final
Tipo TOKEN_PRIVILEGES
El privilegio cuenta mientras
Privilegios como atributo LUID (matriz de cualquier tamaño)
Tipo final
Función de declaración privada GetCurrentProcess Lib "kernel32 "() es Long
Función de declaración privada OpenProcessToken Lib " advapi 32 "(el identificador del proceso ByVal es de tipo largo, ByVal DesiredAccess es un entero largo, TokenHandle es un entero largo)
Función de declaración privada LookupPrivilegeValue Lib " advapi 32 " Alias " LookupPrivilegeValueA " (sistema ByVal LP el nombre es una cadena, ByVal lpName es una cadena, lpLuid es LUID)Long
Función de declaración privada AjustarTokenPrivileges Lib " advapi 32 "(el identificador ByVal TOKEN es largo, ByVal DisableAllPrivileges es largo, NewState es TOKEN_PRIVILEGES, ByVal BufferLength es largo, estado anterior es TOKEN_PRIVILEGES, longitud de retorno es largo)
Función de declaración pública ExitWindowsEx Lib "usuario 32 "(ByVal u flags es largo, ByVal dwReserved es largo) es largo
Declaración privada La función GetVersionEx Lib "kernel32 "alias" GetVersionExA "( ByRef lpVersionInformation como información de versión del sistema operativo) es larga
Detecta si el programa se está ejecutando en Windows NT y detecta si es NT.
La función pública IsWinNT() es un valor booleano
Atenuar myOS como OSVERSIONINFO
myOS .dwosversioninfosize = Len(myOS)
GetVersionEx. globulina
IsWinNT =(myos . dwplatformid = VER_Platform_WIN32_NT)
Función final
Establece el permiso de apagado para la aplicación actual.
Private subenabled()
Dim hProc es largo
Dim hToken es tan largo como
Dim Moulide reproduce LUID
Atenuar mPriv como TOKEN_PRIVILEGES
Atenuar mNewPriv como TOKEN_PRIVILEGES
hProc = GetCurrentProcess()
OpenProcessToken hProc, TOKEN_ADJUST _ PRIVILEGES TOKEN _ QUERY, hToken p>
LookupPrivilegeValue " ", " SeShutdownPrivilege ", mLUID
mPriv. PrivilegeCount = 1
mPriv. Permisos(0). Propiedad = SE_privilege_enabled
mPriv. Permisos(0). pLuid = mLUID
Habilitar permiso de cierre para la aplicación actual Otorga permiso de cierre de la aplicación actual.
AjustarTokenPrivileges hToken, False, mPriv, 4 (12*mPriv.PrivilegeCount), mNewPriv, 4 (12*mNewPriv.PrivilegeCount)
Finalizar conector
Cerrar La computadora apaga la computadora.
Public Sub ShutDownPC (forzado a booleano)
Atenuar ret mientras
Las banderas atenuadas son tan largas
Banderas = EWX_SHUTDOWN o EWX_POWEROFF
if Force Then Flags = Flags EWX _ Force
Si es WinNT, habilite el apagado
Salir del indicador WindowsEx, 0
finalizar conector p>
Reinicie la computadora.
Sub reinicio público de PC (forzado a booleano)
Dim ret As Long
La bandera tenue es tan larga
Flags = EWX_REBOOT
si Force Then Flags = Flags EWX _ Force
Si es WinNT, habilite el apagado
Salir del indicador WindowsEx, 0
Finalizar conector
Cerrar sesión del usuario actual. Cancelar (cerrar sesión) del usuario actual.
Cierre de sesión secundario público (forzado a booleano)
Atenuar ret mientras
Atenuar ret mientras
Flags = EWX_LOGOFF
if Force Then Flags = Flags EWX _ Force
Indicador Salir de WindowsEx, 0
Conector final
Descripción de inicio automático: (establecido en la utilidad CMOS-copyright (c) Software de premios 1984-2001 como ejemplo)
Presione la tecla Eliminar para ingresar al programa de configuración CMOS.
Mueva la selección a Configuración de administración de energía y presione Entrar.
Luego mueva la opción a Recuperar mediante alarma y presione la tecla AvPág para seleccionar Activar.
Pase a la siguiente línea y establezca la alarma del día (mes) en 0.
Pase a la siguiente línea y configure la hora (hh: mm: ss) del despertador en [su propia hora de inicio], por ejemplo: 8:0:0 (encendido a las 8 a. m.).