PDA

View Full Version : سوال: ایجاد Sys Tray Icon



shahmahi
دوشنبه 16 شهریور 1388, 16:00 عصر
سلام
بچه ها من یکسری کد دارم که با استفاده ازتوابع و API میتونه آیکون برنامتون رو درکنار ساعت قرار بده .
من میخوام که وقتی آیکون برنامه در کنار ساعت قرار گرفت و کاربر موس رو روی آیکون میبره اسم برنامه داخل یک Tooltip نشون داده بشه ، اگه کسی این کارو بلده منو راهنمایی کنه لطفا. :چشمک:

کدی که باید توی یک ماژول نوشته بشه:


Public Const WM_RBUTTONUP = &H205
Global Const WM_MOUSEMOVE = &H200
Global Const NIM_ADD = 0
Global Const NIM_DELETE = 2
Global Const NIM_MODIFY = 1
Global Const NIF_ICON = 2
Global Const NIF_MESSAGE = 1
Global Const ABM_GETTASKBARPOS = &H5
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
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
Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type
Global Notify As NOTIFYICONDATA
Global BarData As APPBARDATA
Public Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Public Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Public Sub AddIcon(Form1 As Form, IconID As Long, Icon As Object, ToolTip As String)
Dim Result As Long
BarData.cbSize = 36&
Result = SHAppBarMessage(ABM_GETTASKBARPOS, BarData)
Notify.cbSize = 88&
Notify.hwnd = Form1.hwnd
Notify.uID = IconID
Notify.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
Notify.uCallbackMessage = WM_MOUSEMOVE
Notify.hIcon = Icon
Notify.szTip = ToolTip & Chr$(0)
Result = Shell_NotifyIcon(NIM_ADD, Notify)
End Sub
Public Sub delIcon(IconID As Long)
Dim Result As Long
Notify.uID = IconID
Result = Shell_NotifyIcon(NIM_DELETE, Notify)
End Sub


کدی که باید در رویداد Form_Load نوشته بشه:

Public IconObject As Object
Private Sub Form_Load()
Set IconObject = Me.Icon
AddIcon Me, IconObject.Handle, IconObject, "TrayIcon"
End Sub

اینم کدی که باید برای خروج از برنامه استفاده کنید:

delIcon Form1.IconObject.Handle
delIcon Form1.Icon.Handle
Dim intctr As Integer
For intctr = (Forms.Count - 1) To 0 Step -1
Unload Forms(intctr)
Next intctr

Mbt925
دوشنبه 16 شهریور 1388, 18:12 عصر
در این مورد، استفاده مستقیم از کد، وقت و انرژی زیادی از شما می گیره.

از کنترل زیر استفاده کنید:

http://barnamenevis.org/forum/showpost.php?p=392152&postcount=5