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