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.286 mal aufgerufen. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung 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 Neu! sevDTA 3.0 Pro SEPA mit Kontonummernprüfung Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. |
||||||||||||||
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. |