vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2022
 
zurück
Rubrik: System/Windows · Sonstiges   |   VB-Versionen: VB4, VB5, VB628.07.03
XP-TrayIcon

Erstellen einer Windows XP-Blase im SystemTray

Autor:   AlexanderBewertung:     [ Jetzt bewerten ]Views:  18.113 
www.alexosoft.de.vuSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Angenommen Sie wollen dem Benutzer z.B. eine Meldung anzeigen, dass Updates zu Ihrem Programm bereit stehen. Dies soll aber nicht als normale Meldung angedeutet werden, da dies den Benutzer stören könnte.

Wie könne man hier vorgehen?
Man könnte ein Dialog öffnen und nach einiger Zeit wieder schließen...

Man könnte aber auch...
...eine "XP-Blase" im SystemTray anzeigen...

So geht's!
Zuerst fügen wir ein folgenden Code in ein Modul ein:

Option Explicit
 
' Hier werden alle wichtigen Daten deklariert,
' damit später das Erstellen einer Windows
' XP Blase einfacher ist.
Public ToolTip As NOTIFYICONDATA
 
Public Type NOTIFYICONDATA
  cbSize As Long
  hwnd As Long
  uID As Long
  uFlags As Long
  uCallbackMessage As Long
  hIcon As Long
  szTip As String * 128
  dwState As Long
  dwStateMask As Long
  szInfo As String * 256
  uTimeout As Long
  szInfoTitle As String * 64
  dwInfoFlags As Long
End Type
 
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
 
Public Const NIM_SETFOCUS = &H3
Public Const NIM_SETVERSION = &H4
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIF_STATE = &H8
Public Const NIF_INFO = &H10
Public Const NIS_HIDDEN = &H1
Public Const NIS_SHAREDICON = &H2
 
Public Const NIF_NOICON = 0
Public Const NIF_INFOICON = 1
Public Const NIF_WARNINGICON = 2
Public Const NIF_ERRORICON = 3
 
Public Const WM_MOUSEMOVE = &H200
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
 
 
Public Declare Function SetForegroundWindow Lib "user32" ( _
  ByVal hwnd As Long) As Long
 
Public Declare Function Shell_NotifyIcon Lib "shell32" _
  Alias "Shell_NotifyIconA" ( _
  ByVal dwMessage As Long, _
  pnid As NOTIFYICONDATA) As Boolean
 
Private Declare Function DefWindowProc Lib "user32" _
  Alias "DefWindowProcA" ( _
  ByVal hwnd As Long, _
  ByVal wMsg As Long, _
  ByVal wParam As Long, _
  ByVal lParam As Long) As Long
Public Function WindowProc(ByVal hwnd As Long, _
  ByVal uMsg As Long, ByVal wParam As Long, _
  ByVal lParam As Long) As Long
 
  ' Auf bestimmte Ereignisse reagieren
  Select Case uMsg
    Case WM_LBUTTONDBLCLK
      ' Fenster schließen
      ' Hier können Sie Code hinzufügen, wenn der Benutzer 
      ' auf das Icon in der Taskbar klickt.
  End Select
 
  ' Standard-Prozedur aufrufen und Ergebnis 
  ' zurückgeben
  WindowProc = DefWindowProc(hwnd, uMsg, wParam, lParam)
End Function

Als nächstes fügen wir nur noch die Funktionen zum Erstellen einer Windows XP-Blase hinzu:

Public Function NewBalloon(ByVal Title As String, _
  ByVal Text As String, _
  ByVal sToolTip As String, _
  ByVal Icon As Long, _
  Optional ByVal TimeOut As Long, _
  Optional TrayIcon As Variant)
 
  Shell_NotifyIcon NIM_DELETE, ToolTip
  With ToolTip
    .cbSize = Len(ToolTip)
    .uID = vbNull
    .uFlags = NIF_ICON Or NIF_INFO Or NIF_MESSAGE Or NIF_TIP
    .uCallbackMessage = WM_LBUTTONDBLCLK
    If Not IsMissing(TrayIcon) Then .hIcon = TrayIcon
    .szTip = sToolTip & vbNullChar
    .dwState = 0
    .dwStateMask = 0
    .szInfo = Text & Chr(0)
    .szInfoTitle = Title & Chr(0)
    .dwInfoFlags = Icon
    .uTimeout = TimeOut
  End With
  Shell_NotifyIcon NIM_ADD, ToolTip
End Function

Und schon können Sie Windows XP Basen erstellen.

Syntax:

NewBalloon(ByVal Title As String, _
  ByVal Text As String, _
  ByVal sToolTip As String, _
  ByVal Icon As Long, _
  Optional ByVal TimeOut As Long, _
  Optional TrayIcon As Variant)

  • Title: Überschrift der Blase
  • Text: Text, der angezeigt wird
  • sToolTip: Text, der angezeigt wird, wenn der Benutzer mit der Maus über das TrayIcon fährt
  • Icon: Art des ToolTips
  • TimeOut: Wie lange die Blase angezeigt wird (in Sek.)
  • TrayIcon: Bild des TrayIcon

    Um jetzt eine Blase zu Erstellen, müssen Sie nur noch folgende Codezeile eingeben:

    Beispiel mit Bild

      NewBalloon "Windows-Aktivierung", _
        "Noch 1 Tag bis zur Aktivierung.", _
        "Windows Aktivierung aufrufen", _
        NIF_WARNINGICON, 3, Image1.Picture

    Dabei steht Image1 für ein Image-Steuerelement. Sie brauchen aber nicht unbedingt kein Bild einzugeben.

    Beispiel ohne Bild

    NewBalloon "Windows-Aktivierung", _
      "Haha! Reingelegt", _
      "Hier der ToolTip", _
      NIF_INFOICON, 3

    Was zu beachten ist:
    Sie können nur eine Blase anzeigen. Wenn Sie die Funktion also 2x hintereinander ausführen, wird nur die letzte Blase angezeigt.
     

  • Dieser Tipp wurde bereits 18.113 mal aufgerufen.

    Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

    Über diesen Tipp im Forum diskutieren
    Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

    Neue Diskussion eröffnen

    nach obenzurück


    Anzeige

    Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
    (einschl. Beispielprojekt!)

    Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
    - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
    - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
    Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
     
       

    Druckansicht Druckansicht Copyright ©2000-2022 vb@rchiv Dieter Otter
    Alle Rechte vorbehalten.
    Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

    Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel