Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > В systray


Автор: Loquacious 11.4.2003, 06:53
Народ, как сделать так что бы программка скидывалась в systemtray в иконку и тама работало меню , при нажатии на иконку правой миши..... Help Me ! очень нужно! exclamation.gif

Автор: Step 11.4.2003, 09:45
шелнотифиикон как то так, для бейсика точно не знаю, но ты поищи

Автор: IZ@TOP 11.4.2003, 10:36
Цитата
шелнотифиикон

А не по русски можно ?

Автор: Step 11.4.2003, 10:43
shell_notifyicon or notifyicon

Автор: Loquacious 12.4.2003, 03:09
Step, Не фига, нету такого в BASIC sad.gif

Автор: Loquacious 12.4.2003, 03:10
= ... HELP ME ХОТЬ КТО НИ БУДЬ ... =

Автор: Loquacious 13.4.2003, 00:34
= ... Что вы все такие злые! ... =
= ... хоть кто ни будь мне ответит?... =

Автор: Step 15.4.2003, 15:53
Цитата(Loquacious @ 12.4.2003, 03:09)
Step, Не фига, нету такого в BASIC sad.gif

короче эта функция из модуля, systray попробуй его подключить

Автор: Trojan Lord 15.4.2003, 16:48
Option Explicit

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

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

Dim theForm As NOTIFYICONDATA

Private Sub Command1_Click()
Me.Hide
End Sub


Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Form_Load()
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2

' запись размера структуры
theForm.cbSize = Len(theForm)

' Установка хедера иконки
theForm.hWnd = picNotifier.hWnd
theForm.hIcon = Me.Icon

theForm.uId = 1&

'Установка Флажков
'в данном случие показывать иконку,
' отображать TOOLTIP
' передовать события в форму
theForm.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE

'Источник событий мышка
theForm.ucallbackMessage = WM_MOUSEMOVE

'Строка тултипа
theForm.szTip = "ТЕСТ TOOLTIP" & Chr$(0)

Shell_NotifyIcon NIM_ADD, theForm
Me.Hide
App.TaskVisible = False

End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' We also need to remove it when the program
' is ended.

' Change theForm's cbSize to theForm's length.
theForm.cbSize = Len(theForm)

' Change theForm's hWnd to picNotifier's hWnd.
theForm.hWnd = picNotifier.hWnd

' Change theForm's uId to 1&.
theForm.uId = 1&

' Remove it from the TaskBar.
Shell_NotifyIcon NIM_DELETE, theForm

End Sub



Private Sub mnuPopMenuExit_Click()
Unload Me
End Sub

Private Sub mnuPopMenuShow_Click()
Me.Show
End Sub

Private Sub picNotifier_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Обработка событий
Static Rec As Boolean, Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Rec = False Then ' Чтоб не повторять Запуск
Rec = True
Select Case Msg
'Если DoubleClick
Case WM_LBUTTONDBLCLK:
Me.Show
'Если левая Кнопка нажата
Case WM_LBUTTONDOWN:

'Если левая Кнопка Отжата
Case WM_LBUTTONUP:

'Правая кнопка Click
Case WM_RBUTTONDBLCLK:

'Если Правая Кнопка нажата
Case WM_RBUTTONDOWN:

'Если Правая Кнопка Отжата
Case WM_RBUTTONUP:
PopupMenu mnuPopMenu
End Select
Rec = False
End If

End Sub




Автор: Step 15.4.2003, 16:53
ну вот человек конкретно тебе и ответил, хотя можно было до этого дойти самим, а вообще кидайте бейсик - слабый язык, и потдержка у него слабая

Автор: Trojan Lord 15.4.2003, 18:08
кидать не стоит..... пригодится когда-нить

Автор: Step 15.4.2003, 18:13
Trojan Lord
я имел ввиду основательно работать на нем, а так изредка даже удобно в офисе чето збацать, но как основной язые - это не то

Автор: Trojan Lord 15.4.2003, 18:36
2 Step
не важно на каком языке ты кодишь, гавное - алгоритм !

Автор: Step 16.4.2003, 09:29
Trojan Lord вопрос в том где логика лучше, и где работать проще

Автор: Loquacious 16.4.2003, 16:52
Цитата
а вообще кидайте бейсик - слабый язык, и потдержка у него слабая

Step,не брошу... не брошу... реал... хоть и самый просто , но все же когда делать нечего.... помогает....

Автор: Loquacious 16.4.2003, 16:53
Trojan Lord, поддерживаю!

Автор: Step 16.4.2003, 19:02
ладно не будем спорить, каждый хвалит свое болото.



хатя я во многих болотах перебывал и выбрал для себя лучшее

Автор: Trojan Lord 17.4.2003, 16:34
2 Step - логика в голове ...... или я не прав ?

Автор: Step 17.4.2003, 16:38
прав, но еще есть логика языка, так вот в с++ она на самом высоком уровне...
паскаль и тот уродский

Автор: Loquacious 27.4.2003, 06:59
млин... я офигеваю.. тема ободном создана... а общение пошло по другой теме , тоесть обсирание!

• Да к стате во поводу того кода сверху.... не фига не смог разобраться!

• Если что не так поправте, но мне кажется что он закрывает окно и потом его опять открывает, но при этом операция которая совершается в этом окне тоже закрывается... выключается....

• мне енто нужно для сервера ЧАТА! он всегда должен работать...

Автор: Shekspir 27.6.2003, 10:33
hehe.gif
Тебе функции Winapi нужны, а точнее та самая, шелнотифиикон :
Код

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

Автор: Shekspir 27.6.2003, 11:05
hehe.gif
Вот ещё примерчик откопал

Код

Private Const nim_add = &H0
Private Const nim_delete = &H2
Private Const nim_modify = &H1
Private Const nif_icon = &H2
Private Const nif_message = &H1
Private Const nif_tip = &H4
Private Const wm_mousemove = &H200
'=====================================
Private Declare Function shell_notifyicon Lib "shell32.dll" Alias "shell_notifyiconA" (ByVal dwmessage As Long, lpdata 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
End Type
Private icondata As notifyicondata
Private isvisible As Boolean
'===============================================
Public Sub place(wnd As Long, icon As Long, Optional tip As Variant, Optional message As Variant)
  Dim icondata As notifyicondata
   If Visible Then Exit Sub
   With icondata
       .hwnd = wnd
       .hicon = icon
       If Not IsMissing(tip) Then .sztip = tip + Chr$(0)
       If Not IsMissing(message) Then .ucallbackmessage = message
       End With
   isvisible = shell_notifyicon(nim_add, icondata) <> 0
End Sub
'==================================================
Public Sub remove()
   If Not isvisible Then Exit Sub
   isvisible = shell_notifyicon(nim_delete, icondata) <> 0
End Sub
'=============================================
Private Sub class_initialise()
   isvisible = False
   With icondata
       .cbsize = 88
       .uid = 1
       .uflags = nif_icon Or nif_message Or nif_tip
       .ucallbackmessage = wm_mousemove
       .sztip = Chr(0)
       End With
End Sub
'============================================
Private Sub class_terminate()
   remove
End Sub

End Sub


в форме нужно указать:

Код
Public sti as systrayicon



Метод place вызовем так:

Код
Mainform.sti.place.hwnd, mainform.icon, "hello world"




Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)