Tipp 0220 Windows-Restart-Dialog anzeigen
Autor/Einsender:
Datum:
  Detlev Schubert
05.04.2002
Entwicklungsumgebung:   VB 5
Möchten Sie den Weitergabe- und Verpackungs-Assistenten modifizieren, dass der Anwender zu einem Neustart von Windows aufgefordert wird, oder hat Ihre Anwendungen Systemeinstellungen geändert, die erst nach einem Neustart von Windows wirksam werden?
Dann ist dieser Tipp mit der undokumentierten API-Funktion SHRestartSystemMB genau das Richtige. Sie öffnet entsprechend des Parameters uFlags eine spezielle MessageBox, mit der Frage, ob Windows neu gestartet oder heruntergefahren werden soll. Durch das Betätigen der Befehlsschaltfläche 'Ja', wird die entsprechende Aktion ausgeführt.
Code im Codebereich des Moduls
 
Option Explicit

Declare Function GetVersionEx Lib "kernel32" Alias _
      "GetVersionExA" (lpVersionInformation As _
      OSVERSIONINFO) As Long

Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128
End Type

Const VER_PLATFORM_WIN32s = 0
Const VER_PLATFORM_WIN32_WINDOWS = 1
Const VER_PLATFORM_WIN32_NT = 2

Public g_fIsWinNT As Boolean

Public Function IsWinNT() As Boolean
  Dim osvi As OSVERSIONINFO

  osvi.dwOSVersionInfoSize = Len(osvi)
  GetVersionEx osvi
  IsWinNT = (osvi.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
 
Code im Codebereich der Form
 
Option Explicit

Private Declare Function SHRestartSystemMB Lib "shell32" Alias _
      "#59" (ByVal hOwner As Long, ByVal sPrompt As String, _
      ByVal uFlags As Long) As Long

Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2

Private Sub Form_Load()
  g_fIsWinNT = IsWinNT

  With cboRestart
    .AddItem "1 - System herunterfahren"
    .AddItem "2 - System neu starten"
    .Text = "< Art des Dialogs auswählen >"
  End With
End Sub

Private Sub cboRestart_Click()
  Dim sPrompt As String
  Dim uFlag As Long

  sPrompt = txtRestartPrompt & vbCrLf
  If Check1.Value = 0 Then sPrompt = ""

  If g_fIsWinNT Then sPrompt = StrConv(sPrompt, vbUnicode)

  Select Case cboRestart.ListIndex
    Case -1
      uFlag = Val(txtRestartPrompt.Text)
    Case 0
      uFlag = EWX_SHUTDOWN
    Case 1
      uFlag = EWX_REBOOT
  End Select

  If SHRestartSystemMB(Me.hWnd, sPrompt, uFlag) = vbYes Then End
End Sub
 
Weitere Links zum Thema
Windows-Ausführen-Dialog anzeigen
Windows-Beenden-Dialog anzeigen
Windows-Öffnen-mit-Dialog anzeigen
Windows-Suchen-Dialog anzeigen

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (3,5 kB) Downloads bisher: [ 1127 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Samstag, 20. August 2011