Windows Vista und auch Windows 7 bieten über das Windows API einen neuen TaskDialog, den man somit auch in seinen eigenen Anwendungen verwenden kann, sofern diese auf einem Vista bzw. Windows 7 System aufgerufen wird. Der neue Task-Dialog bietet gegenüber der Standard Windows Message-Box erweiterte Möglichkeiten, wie bspw. das Anzeigen bestimmter Sicherheits-Symbole. Auch optisch sieht der Task-Dialog schöner aus, als die Standard Message-Box.
Erstellen Sie ein neues Klassenmodul und fügen folgenden Code ein: ' Dialog-Schaltflächen Public Enum TaskDlgButton OK = 1 Yes = 2 No = 4 Cancel = 8 Retry = 16 [Close] = 32 End Enum ' Dialog-Symbole Public Enum TaskDlgIcon NoIcon = 0 WarningIcon = -1 ErrorIcon = -2 InfoIcon = -3 QuestionIcon = 32514 SecurityIcon = -4 SecurityIconBlue = -5 SecurityIconWarning = -6 SecurityIconError = -7 SecurityIconOK = -8 SecurityIconGrey = -9 End Enum Public Class TaskDlg ' API-Deklaration Private Declare Auto Function TaskDialog Lib "Comctl32.dll" ( _ ByVal hWnd As IntPtr, _ ByVal hInstance As IntPtr, _ ByVal lpTitle As String, _ ByVal lpMainText As String, _ ByVal lpContentText As String, _ ByVal dwButtons As Integer, _ ByVal dwIcon As Integer, _ ByRef wButton As Integer) As Integer ''' <summary> ''' Ruft den Windows Task-Dialog mit den angebenen Parametern auf. ''' </summary> ''' <param name="WindowTitle">Fenstertitel</param> ''' <param name="MainText">Text, der im obereen Bereich angezeigt werden soll.</param> ''' <param name="ContentText">Erklärungstext.</param> ''' <param name="Buttons">Schaltflächen, die angezeigt werden sollen.</param> ''' <param name="Icon">Symbol (Icon), das angezeigt werden soll.</param> ''' <returns>Die vom Anwender ausgewählte Schaltfläche</returns> Public Shared Function Show(ByVal WindowTitle As String, ByVal MainText As String, _ ByVal ContentText As String, ByVal Buttons As TaskDlgButton, _ ByVal Icon As TaskDlgIcon) As TaskDlgButton Dim result As Integer ' Task-Dialog aufrufen TaskDialog(0&, 0&, WindowTitle, MainText, ContentText, Buttons, &HFFFF& And Icon, result) ' Rückgabewert des ausgewählten Button Select Case result Case 1 Return TaskDlgButton.OK Case 2 Return TaskDlgButton.Cancel Case 4 Return TaskDlgButton.Retry Case 6 Return TaskDlgButton.Yes Case 7 Return TaskDlgButton.No Case 8 Return TaskDlgButton.Close End Select End Function End Class Nachfolgende Abbildung zeigt, welcher Parameter für welche Ausgabe innerhalb des Task-Dialogs benutzt wird.
Aufrufbeispiel: Dim result As TaskDlgButton result = TaskDlg.Show("Wichtiger Hinweis", _ "MyApplication erfordert Ihre Aufmerksamkeit!", _ "Der Aufruf von EXE-Dateien stellt ein erhöhtes Sicherheitsrisiko dar." & _ vbCrLf & vbCrLf & _ "Sind Sie sicher, dass Sie die ausgewählte Datei ausführen möchten?", _ TaskDlgButton.Yes Or TaskDlgButton.No, TaskDlgIcon.SecurityIconBlue) |