Bueno pues con la función ExitWindowsEx puedo apagar y reiniciar windows y cerrarlo pero me a surgido una duda... y es con este código
'Declaración de la función ExitWindowsEx
Private Declare Function ExitWindowsEx Lib "User32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
'Constanets para la función
Const cerrarWin = 1
Const reiniciarWin = 2
Private Sub Command1_Click()
Dim retorno As Long
If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)
End Sub
Bueno e puesto 2 options y 1 comando, entonces en un tutorial y decía.... NOTA: esto aunque nosotros utilicemos solo el primer parámetro, en el segundo, dwreserved, debemos pasarle el valor 0.
Entonces me informe y el uFlags tiene unos valores.. y son
0 = Reinicia windows.
1 = Apaga el sistema.
2 = Reinicia el sistema.
Entonces mi pregunta es en este código:
If Option1 Then retorno = ExitWindowsEx(reiniciar, 0)
If Option2 Then retorno = ExitWindowsEx(cerrar, 0)
El primero option si lo veo razonable pero el segundo option no ya que el 0= a Reiniciar el Sistema en todo caso sería 1 para apagar el sistema...?
Es que no lo entiendo bien...
Edito: También estoy haciendo pruebas y las 'Constanets para la función
Const cerrarWin = 1
Const reiniciarWin = 2
las e borrado,para ver si se apaga el equipo o se reiniciaba y si funcionaba bien
Saludos
Saludos
:P no le veo tanto problema
Public Const EWX_SHUTDOWN = 1 'apagar
Public Const EWX_REBOOT = 2 'reiniciar
Public Const EWX_FORCE = 4 'forzar el apagado de window
las constantes no importa si las borras, eso sirve para que el codigo sea mas entendible y legible
Solución: Se hace con la Api ExitWindowsEx
Option Explicit
'Control de Apagar, Cerrar Session, reiniciar
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0 'Cerrar Session
ExitWindowsEx EWX_LOGOFF, 0 'Cierra sesión en Win 98, 2000, XP
Case 1 'Reiniciar PC
ExitWindowsEx EWX_REBOOT, 0 'Reinicia el Sistema
Shell "shutdown -r -f -t 0" 'Reinicia el equipo en Win XP
Case 2 'Apagar PC
ExitWindowsEx EWX_SHUTDOWN, 0 'Apaga el equipo en Win 98, 2000
Shell "shutdown -s -t 0" 'Apaga el equipo en Win XP
End Select
End Sub