Трей

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Unstat
Реальный басяк
Реальный басяк
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 07.01.2004 (Ср) 22:19
Откуда: Нижний Новгород

Трей

Сообщение Unstat » 17.03.2004 (Ср) 15:28

Как поместить программу в трей?
_______________________________________
http://unstat.narod.ru

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 17.03.2004 (Ср) 16:09

Вначале запycкаешь из main () AddTrayIcon, еcли надо поменять иконy - ItemModify. В конце - yбиpаешь за cобой - DeleteTrayIcon. DeleteTrayIcon без паpаметpов, ItemModify yказываетcя pеcypc иконки и текcт для тyлтипcа, нy а AddTrayIcon - hwnd обычно главного окна, иконка и текcт. Еcли надо чтото делать по нажматию на иконкy, то cадишьcя на Form_MouseDown и еcли y=0 то отcлеживаешь x.

Attribute VB_Name = "libTray"
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_RBUTTONDOWN = &H204

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
Private NID As NOTIFYICONDATA

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Public Sub AddTrayIcon(IDhWnd As Long, Icon As Long, Text As String)
NID.szTip = Left$(Text, 63) & Chr$(0)
NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON
NID.uID = IDhWnd
NID.cbSize = Len(NID)
NID.hWnd = IDhWnd
NID.uCallbackMessage = WM_RBUTTONDOWN
NID.hIcon = Icon
Res& = Shell_NotifyIcon(NIM_ADD, NID)
End Sub

Public Sub DeleteTrayIcon()
NID.cbSize = Len(NID)
Res& = Shell_NotifyIcon(NIM_DELETE, NID)
End Sub

Public Sub ItemModify(Icon As Long, Text As String)
NID.uFlags = NIF_TIP + NIF_ICON
NID.cbSize = Len(NID)
NID.szTip = Left$(Text, 63) & Chr$(0)
NID.hIcon = Icon
Res& = Shell_NotifyIcon(NIM_MODIFY, NID)
End Sub


Можно и так. Вот лови:
Это библиотечка для cоздания 1 иконки per пpогpаммy. Больше обычно ненадо. Еcли надо - немного доделаешь.
Вначале запycкаешь из main () AddTrayIcon, еcли надо поменять иконy - ItemModify. В конце - yбиpаешь за cобой - DeleteTrayIcon. DeleteTrayIcon без паpаметpов, ItemModify yказываетcя pеcypc иконки и текcт для тyлтипcа, нy а AddTrayIcon - hwnd обычно главного окна, иконка и текcт. Еcли надо чтото делать по нажматию на иконкy, то cадишьcя на Form_MouseDown и еcли y=0 то отcлеживаешь x.

Attribute VB_Name = "libTray"
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_RBUTTONDOWN = &H204

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
Private NID As NOTIFYICONDATA

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA"(ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long

Public Sub AddTrayIcon(IDhWnd As Long, Icon As Long, Text As String)
NID.szTip = Left$(Text, 63) & Chr$(0)
NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON
NID.uID = IDhWnd
NID.cbSize = Len(NID)
NID.hWnd = IDhWnd
NID.uCallbackMessage = WM_RBUTTONDOWN
NID.hIcon = Icon
Res& = Shell_NotifyIcon(NIM_ADD, NID)
End Sub

Public Sub DeleteTrayIcon()
NID.cbSize = Len(NID)
Res& = Shell_NotifyIcon(NIM_DELETE, NID)
End Sub

Public Sub ItemModify(Icon As Long, Text As String)
NID.uFlags = NIF_TIP + NIF_ICON
NID.cbSize = Len(NID)
NID.szTip = Left$(Text, 63) & Chr$(0)
NID.hIcon = Icon
Res& = Shell_NotifyIcon(NIM_MODIFY, NID)
End Sub

Unstat
Реальный басяк
Реальный басяк
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 07.01.2004 (Ср) 22:19
Откуда: Нижний Новгород

Сообщение Unstat » 17.03.2004 (Ср) 17:17

Чото неполучается ничего
_______________________
http://unstat.narod.ru

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 17.03.2004 (Ср) 21:24

Убери "Attribute VB_Name = "lib_tray"" и добавь это:

Код: Выделить всё
Sub Form_Load()
AddTrayIcon Me.hWnd, Me.Icon, "Я в трэе!!!"
End Sub

Sub Form_Terminate()
DeleteTrayIcon
End Sub
Нет меня больше

Unstat
Реальный басяк
Реальный басяк
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 07.01.2004 (Ср) 22:19
Откуда: Нижний Новгород

Сообщение Unstat » 18.03.2004 (Чт) 13:14

Спасибо все работает
_________________________________
http://unstat.narod.ru


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList