Deklaration: Declare Function Shell_NotifyIcon Lib "shell32.dll" _ Alias "Shell_NotifyIconA" ( _ ByVal dwMessage As Long, _ pnid As NOTIFYICONDATA) As Long Beschreibung: Parameter:
dwMessage Konstanten: ' TrayIcon anlegen Const NIM_ADD = &H0 ' TrayIcon löschen Const NIM_DELETE = &H2 ' TrayIcon ändern Const NIM_MODIFY = &H1 ' Win 2000: Focus auf den Tray setzten Const NIM_SETFOCUS = &H4 ' Win 2000: siehe Struktur Deklaration Const NIM_SETVERSION = &H8 Rückgabewert: Beispiel: Private Declare Function Shell_NotifyIcon Lib "shell32.dll" _ Alias "Shell_NotifyIconA" ( _ ByVal dwMessage As Long, _ pnid As NOTIFYICONDATA) As Long Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 ' Unter Windows 2000 "* 128" ' Unter Windows 200 ausserdem noch: ' dwState As Long ' dwStateMask As Long ' szInfo As String * 256 ' uTimeoutOrVersion As Long ' szInfoTitle As String * 64 ' dwInfoFlags As Long End Type ' NOTIFYICONDATA uFlags Konstanten Private Const NIF_ICON = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_TIP = &H4 Private Const NIF_STATE = &H8 ' Windows 2000 Private Const NIF_INFO = &H10 ' Windows 2000 ' NOTIFYICONDATA Win2000 dwState Konstanten Private Const NIS_HIDDEN = &H1 Private Const NIS_SHAREDICON = &H2 ' NOTIFYICONDATA Win2000 uTimeoutOrVersion Konstanten Private Const NOTIFYICON_VERSION = &H1 ' NOTIFYICONDATA Win2000 dwInfoFlags Konstanten Private Const NIIF_WARNING = &H30 Private Const NIIF_ERROR = &H10 Private Const NIIF_INFO = &H40 ' Shell_NotifyIcon dwMessage Konstanten Private Const NIM_ADD = &H0 Private Const NIM_DELETE = &H2 Private Const NIM_MODIFY = &H1 Private Const NIM_SETFOCUS = &H4 ' Windows 2000 Private Const NIM_SETVERSION = &H8 ' Windows 2000 ' Einige Fensternachrichten Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_LBUTTONUP = &H202 Private Const WM_MBUTTONDBLCLK = &H209 Private Const WM_MBUTTONDOWN = &H207 Private Const WM_MBUTTONUP = &H208 Private Const WM_RBUTTONDBLCLK = &H206 Private Const WM_RBUTTONDOWN = &H204 Private Const WM_RBUTTONUP = &H205 Private Const WM_MOUSEMOVE = &H200 ' Damit wir nicht unsere eigene Callback-Funktion schreiben müssen ' nehmen wir doch einfach eine schon vorhandene und missbrauchen ' sie für unseren Zweck. Das TrayIcon sendet in dem Beispiel an unser Programm ' das WM_MOUSEMOVE Ereignis, die Form interpretiert dies ' als einfache Mausbewegung und nimmt aus den Parametern des ' WM_MOUSEMOVE Ereignisses das "eigentliche Ereignis" z.B. ' WM_LBUTTONCLICK. Da die Form aber "denkt", es wären Maus- ' Ereignisse, rechnet sie dieses "eigentliche Ereignis" in die aktuelle ' Maßeinheit z.B. Twips um. Diese müssen wir wieder zurückberechnen, ' um unser "eigentliches Ereignis" zu erhalten. Die X Koordinate ' des Form_MouseMove Ereignisses entspricht dann sozusagen ' lParam einer Callback Funktion, wParam wird leider nicht in diesem ' Beispiel ausgewertet, wird aber auch nicht benötigt. ' Wir könnten auch das WM_MOVE Ereignis verwenden, der Nachteil aber wäre, ' dass uns die interne Hauptschleife der Form "dazwischenfunken" würde ' und die Form an eine andere Stelle des Bildschirmes beförden würde. ' Ich habe extra dieses Beispiel gewählt, damit die sonst schwer zu ' verstehenden Callback Funktionen etwas leichter verständlich sind. ' Dieses Beispiel zeigt nicht den eigentlich Umgang mit Callback-Funktionen, ' man sieht aber, wie leicht sich auch andere Lösungen realisieren lassen. Dim TrayIcon As NOTIFYICONDATA ' Icon in das Tray kopieren Private Sub Command1_Click () Me.ScaleMode = vbTwips With TrayIcon .cbSize = Len(TrayIcon) .hIcon = Me.Icon .hWnd = Me.hWnd .szTip = "Mein erstes Trayicon" & vbNullChar .uCallbackMessage = WM_MOUSEMOVE ' Form bekommt die Ereignisse .uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP .uID = 0& End With Shell_NotifyIcon NIM_ADD, TrayIcon MsgBox "Unser TrayIcon ist nun angelegt" End Sub ' Icon im Tray modifizieren Private Sub Command2_Click () TrayIcon.szTip = "Der ToolTipText des TrayIcons wurde geändert!" & vbNullChar Shell_NotifyIcon NIM_MODIFY, TrayIcon MsgBox "Das TrayIcon wurde geändert" End Sub ' TrayIcon-Ereignisse abfangen Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Select Case X / Screen.TwipsPerPixelX Case WM_LBUTTONUP MsgBox "Sie haben mit der linken Maustaste auf das TrayIcon geklickt" Case WM_RBUTTONUP MsgBox "Sie haben mit der rechten Maustaste auf das TrayIcon geklickt" End Select End Sub ' Icon aus dem SystemTray löschen Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Shell_NotifyIcon NIM_DELETE, TrayIcon End Sub Diese Seite wurde bereits 15.291 mal aufgerufen. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevAniGif (VB/VBA) Anzeigen von animierten GIF-Dateien Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. |
||||||||||||||
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. |