|
Ihre Anwendungen hat irgendwelche Systemeinstellungen geändert,
die erst nach einem Neustart von Windows wirksam werden? Oder Sie
möchten das in Visual Basic geschriebene Setup-Programm des
Weitergabe- und Verpackungs-Assistenten so modifizieren, dass der
Anwender zu einem Neustart von Windows aufgefordert wird, damit neu
installierte Treiber usw. geladen werden können? Dann sollten Sie
die hier vorgestellte, undokumentierte Shell-API-Funktion verwenden.
Diese öffnet eine spezielle MessageBox, in der der Anwender gefragt
wird, ob Windows neu gestartet oder heruntergefahren werden soll.
Die entsprechende Aktion wird ausgeführt, wenn der Anwender die
"Ja"-Schaltfläche betätigt.
Der Hilfsfunktion SettingsChanged können Sie im ersten
optionalen Parameter ein Form übergeben, dessen Handle als Bezug
für die MessageBox verwendet wird. Als Modus (optionaler Parameter
Mode) können Sie zwischen möglichem Neustart (scRestart) oder
Herunterfahren (scShutDown) wählen - voreingestellt ist scRestart.
Im letzten optionalen Parameter ExtraPrompt können Sie einen Text
übergeben, der zusätzlich dem Standard-Text der MessageBox
vorangestellt wird. Da der Text allerdings nahtlos vorangestellt
wird, sollten Sie selbst mit einem abschließenden Leerzeichen oder
mit Zeilenschaltungen (vbCrlf) für einen entsprechenden Abstand
sorgen.
Private Declare Function SHRestartSystemMB Lib "shell32" _
Alias "#59" (ByVal hOwner As Long, ByVal sExtraPrompt As String, _
ByVal uFlags As Long) As Long
Public Enum SystemChangeModeConstants
scShutDown = 1
scRestart = 4
End Enum
Public Sub SettingsChanged(Optional Form As Form, _
Optional ByVal Mode As SystemChangeModeConstants = scRestart, _
Optional ExtraPrompt As String)
Dim nMode As SystemChangeModeConstants
Select Case Mode
Case scShutDown, scRestart
nMode = Mode
Case Else
nMode = scRestart
End Select
If Form Is Nothing Then
SHRestartSystemMB 0, ExtraPrompt, nMode
Else
SHRestartSystemMB Form.hWnd, ExtraPrompt, nMode
End If
End Sub
|