He encontrado esto, pero lo he probado con un Win2k que tengo en red y solo consigo cerrar windows, pero después se queda esperando que apagues a mano.
Si me acuerdo mas tarde lo probaré con win xp.
Aparte de eso, si el equipo que intentas apagar no está conectado el programa se queda bloqueado tras ejecutar esta orden.
Lo pongo en un par de subs para apagar y reiniciar para que lo entienda más gente.
Código :
Ver originalPrivate Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown As Long) As Long
Sub Apagar(Nombre_o_IP_Del_Equipo As String, MensajeAMostrar As String, TiempoDeEspera As Long, ForzarElCierreDeAplicaciones As Boolean)
InitiateSystemShutdown Nombre_o_IP_Del_Equipo, MensajeAMostrar, TiempoDeEspera, ForzarElCierreDeAplicaciones, False
End Sub
Sub Reiniciar(Nombre_o_IP_Del_Equipo As String, MensajeAMostrar As String, TiempoDeEspera As Long, ForzarElCierreDeAplicaciones As Boolean)
InitiateSystemShutdown Nombre_o_IP_Del_Equipo, MensajeAMostrar, TiempoDeEspera, ForzarElCierreDeAplicaciones, True
End Sub
Seguiremos investigando.