Mensaje enviado por "Alberto M. Vernieri \(ar\)" <avernieri@interprov.com> el 17/04/2002
Hola!
Una respuesta mas...
Encontré una API algo más sencilla, que te puede servir...
Aquí va la declaración:
Public Declare Function SetSystemPowerState _
Lib "kernel32" Alias "SetSystemPowerState" _
(ByVal fSuspend As Long, ByVal fForce As Long) As Long
Los parámetros se definen como Long, pero en realidad son booleanos quese representan
igual a 0 => FALSE
distinto de 0 => TRUE
El primer parámetro funciona en Windows 2000 solamente. En W9x es ignorado.
TRUE = Suspend
FALSE = Hibernate
El 2do parametro, si es TRUE fuerza la suspension inmediata, con FALSE interroga a las aplicaciones en uso, y si alguna responde negativamente ignora la suspensión...
En Windows NT (Que no dispone de rutinas de manejo avanzado de poder) el llamado completo es ignorado.
Funciona en 95 / 98 y 2000 (Mi MSDN es anterior al XP, no tengo informacón pero supongo que debe funcionar igual que el 2000)
El valor de retorno 0 indica que la Suspensión NO fue exitosa... De ser <> 0, la aplicación se suspendió con el sistema y regresó luego de la suspensión...
En tu caso, se llamaría más o menos así...
If SetSystemPowerState (-1, -1) > 0 Then
Msgbox "Aqui estamos de nuevo luego de suspender y reanimar"
Else
MsgBox "La suspensión no fue exitosa..."
End If
Espero que te sirva
Saludos
Alberto