002
04.07.2004, 02:15 Uhr
Audron-AT-www
http://www.sXene.de Audron@sxene.de (Operator)
|
aaaaaaalso: Machst ein Formular (Form1) und ein Modul (Module1) IN module 1 fügste folgenden code ein:
Visual Basic: |
Option Explicit
' alle benötigten API-Deklarationen Public Declare Sub keybd_event Lib "user32" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const KEYEVENTF_KEYUP = &H2 Public Const VK_LWIN = &H5B
Public Type NOTIFYICONDATA cbSize As Long hWnd As Long uId As Long uFlags As Long uCallBackMessage As Long hIcon As Long szTip As String * 64 End Type
Public Const NIM_ADD = &H0 Public Const NIM_MODIFY = &H1 Public Const NIM_DELETE = &H2
Public Const NIF_MESSAGE = &H1 Public Const NIF_ICON = &H2 Public Const NIF_TIP = &H4
Public Const WM_MOUSEMOVE = &H200
' Konstanten für linke Maustaste Public Const WM_LBUTTONDBLCLK = &H203 ' Doppelklick Public Const WM_LBUTTONDOWN = &H201 ' Maus gedrückt Public Const WM_LBUTTONUP = &H202 ' Maus losgelassen
' Konstanten für rechte Maustaste Public Const WM_RBUTTONDBLCLK = &H206 ' Doppelklick Public Const WM_RBUTTONDOWN = &H204 ' Maus gedrückt Public Const WM_RBUTTONUP = &H205 ' Maus losgelassen
Public Declare Function Shell_NotifyIcon Lib _ "shell32" Alias "Shell_NotifyIconA" ( _ ByVal dwMessage As Long, _ pnid As NOTIFYICONDATA) As Boolean
Public nid As NOTIFYICONDATA
|
Auf Form1 Machste einen Button (cmdHide) mit dem das programm nachher in den tray gezogen wird, und eine Picture Box (PictureBoxTrayIcon) Wichtig: Mach ein menü mit dem menü editor. Menüname = MenuPopUp Caption is egal.. da musste dann ne checkbox unten deaktivieren wo steht "Visible". dann machste zwei unterbegriffe. Der eine nennste "mnuPopUp" Index = 0 Caption = "Wiederherstellen" und den zweiten nennste "mnuPopUp" Index = 1 Caption = "Beenden"
In Form1 fügste dann folgenden Code ein:
Visual Basic: |
Private Sub cmdHide_Click() ' Symbol der Anwendung zum SysTray hinzufügen With nid .cbSize = Len(nid) .hWnd = Me.hWnd .uId = vbNull .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE .uCallBackMessage = WM_MOUSEMOVE .hIcon = PictureBoxTrayIcon.Picture .szTip = Me.Caption & vbNullChar End With Shell_NotifyIcon NIM_ADD, nid ' Anwendung jetzt "verstecken" Me.Hide End Sub
Private Sub Form_Load() PictureBoxTrayIcon.Visible = False End Sub
Private Sub Form_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ' Das MouseMove Ereignis wird ausgelöst, wenn die ' Maus über das Symbol im Systray geführt wird
Dim lMsg As Long Dim sFilter As String lMsg = X / Screen.TwipsPerPixelX Select Case lMsg Case WM_LBUTTONDOWN ' linke Maustaste wird gedrückt Case WM_LBUTTONUP ' linke Maustaste wird losgelassen Case WM_LBUTTONDBLCLK Me.Show Case WM_RBUTTONDOWN ' rechte Maustaste wird gedrückt Case WM_RBUTTONUP ' rechte Maustaste wird losgelassen ' (jetzt z.B. Popup-Menü öffnen) PopupMenu MenuPopUp Case WM_RBUTTONDBLCLK ' rechte Maustaste - Doppeklick End Select End Sub Private Sub mnuPopUp_Click(Index As Integer) ' Symbol aus dem Systray entfernen Shell_NotifyIcon NIM_DELETE, nid Select Case Index Case 0 ' Wiederherstellen Me.Show Case 1 ' Beenden End End Select End Sub
Private Sub Form_Unload(Cancel As Integer) ' Symbol aus dem Systray entfernen, ' wenn das Programm beended wird Shell_NotifyIcon NIM_DELETE, nid End Sub
|
das wars eigentlich. aber du musst auf deiner form in der picture box (PictureBoxTrayIcon die am Form_Load eh unsichtbar gemacht wird) eine .ico datei laden. hoffe du verstehst das! wennde fragen hast dann frag ^^
Mfg. Audron! -- Mit freundlichen Grüßen Audron, audron@sxene.de
|