Riavvio e chiusura di Windows 95 da VB5
Per chi avesse la necessita` di riavviare o chiudere una sessione Windows
da Visual Basic, ecco qui il codice da scrivere in un modulo Bas.
Option Explicit
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const EWX_POWEROFF = 8
Declare Function ExitWindowsEx Lib "user32" _
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Public Sub WinClose()
'Spegnimento computer
ExitWindowsEx EWX_SHUTDOWN, 0
End Sub
Public Sub WinReboot()
'Riavvio Windows
ExitWindowsEx EWX_REBOOT, 0
End Sub
In un qualsiasi evento e` possibile semplicemente inserire la chiamata WinClose o WinReboot come in questo esempio che chiude Windows dopo un click sopra un CommandButton:
Private Sub Command1_Click()
'Chiusura sistema
WinClose
End Sub
Il significato delle costanti definite in testa al modulo e che potreste usare per creare altre funzioni, e` il seguente:
EXW_LOGOFF
Chiude tutti i processi e fa il LogOff dell'utente. (Equivale a Disconnetti nel pulsante Start di Windows 95).
EXW_SHUTDOWN
Chiude tutti i processi e scarica la cache su HD. (Equivale a Chiudi Sessione).
EXW_REBOOT
Come SHUTDOWN + riavvio del sistema.
EXW_FORCE
Simile a SHUTDOWN, ma sono forzati tutti i processi attivi e le applicazioni in uso possono perdere dati.
Nel modulo, subito dopo la dichiarazione delle costanti, abbiamo la dichiarazione della API.
Il parametro uFlags dev'essere una delle costanti sopra riportate, mentre dwReserved e` completamente ignorato.
La chiamata API puo` essere ovviamente eseguita anche direttamente nei vari Forms di un programma. Personalmente preferisco pero` creare una funzione globale, come nell'esempio, in modo da evitare ricerche alla scoperta della "API perduta" qualora il programma sia molto complesso. Questo sistema di operare puo` risultare molto comodo specialmente quando un programma e` sviluppato per girare sia sotto Win95 che Windows NT in quanto basta cambiare i moduli bas.
Ultimo tip:
prestare attenzione durante le prove perche` funziona anche dall'ambiente IDE di VB, quindi, se dovete ancora salvare qualcosaĆ fatelo subito!
Riccardo Bartolini