Advertisement
ASP_Volume3 Windows API Call/ Explanation #53542

Easily Getting Your Icon In The Systray

Easily add and delete your applications icon from the System Tray (systray), and the icon responds to all mouse clicks. lost all the formatting when i uploaded this article, very disappointing, the readme.txt contains the formatted article, sorry

AI

AI சுருக்கம்: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

மூலக் குறியீடு
original-source
Hi, my first article submission.
First, we have to declare the API's and the constants we will be using. 
'constants required by Shell_NotifyIcon API call: 
Private Const NIM_ADD = &H0 
Private Const NIM_MODIFY = &H1 
Private Const NIM_DELETE = &H2 
Private Const NIF_MESSAGE = &H1 
Private Const NIF_ICON = &H2 
Private Const NIF_TIP = &H4 
Private Const WM_MOUSEMOVE = &H200 
'all these are for the mousemouve event 
Private Const WM_LBUTTONDOWN = &H201 'Button down 
Private Const WM_LBUTTONUP = &H202 'Button up 
Private Const WM_LBUTTONDBLCLK = &H203 'Double-click 
Private Const WM_RBUTTONDOWN = &H204 'Button down 
Private Const WM_RBUTTONUP = &H205 'Button up 
Private Const WM_RBUTTONDBLCLK = &H206 'Double-click 
Private Declare Function SetForegroundWindow Lib "user32" _ 
(ByVal hwnd As Long) As Long 
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean 
'and 1 type that we need 
Private nid As NOTIFYICONDATA 
'user defined type required by Shell_NotifyIcon API call 
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 
End Type 
Basically, I will just be explaining the use of Shell_NotifyIcon from here. The calls to SetForegroundWindow are pretty simple. Heres the code that goes into the form load code so that it will put itself into the system tray, I would suggest making the Form1.ShowInTaskBar = false.
Private Sub Form_Load() 
	Me.Show 
	Me.Refresh 
	With nid 
		.cbSize = Len(nid) 
		.hwnd = Me.hwnd 
		.uId = vbNull 
		.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE 
		''''''The callback should be the mousemove event 
		.uCallBackMessage = WM_MOUSEMOVE 
		.hIcon = Me.Icon 
		''''''Heres the tooltip in the taskbar''''' 
		.szTip = "Your app name" & vbNullChar 
	End With 
	Shell_NotifyIcon NIM_ADD, nid 
End Sub 
and now remove the icon when we unload 
Private Sub Form_Unload(Cancel As Integer) 
	'remove the icon 
	Shell_NotifyIcon NIM_DELETE, nid 
End Sub 
'hide the form when the menuitem is clicked 
Private Sub mnuHide_Click() 
	Me.Hide 
End Sub 
'show the form when the menuitem is clicked 
Private Sub mnuShow_Click() 
	Me.Show 
End Sub 
'unload the form when we click the quit menuitem 
Private Sub mnuQuit_Click() 
	Unload Me 
End Sub 
Thanks for a lot of great responses on my Streaming Screenshots project, but I need more globes :-) Brandon
அசல் கருத்துகள் (3)
வேபேக் மெஷினிலிருந்து (Wayback Machine) மீட்டெடுக்கப்பட்டது