vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik:    |   VB-Versionen: VB2005, VB200801.12.09
Windows TaskDialog in eigener Anwendung verwenden

Dieser Tipp zeigt, wie man unter Windows Vista bzw. Windows 7 den neuen Windows Task-Dialog zur Anzeige von Informationen verwenden kann.

Autor:  Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  1.959 
http://www.tools4vb.de/System:  Win7, Win8, Win10, Win11 Beispielprojekt 

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.

Windows Task-Dialog
Abb. Vista Task-Dialog

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.

Windows Task-Dialog
Abb. Parameter-Erklärung

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)