Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24

Значок в трее не реагирует на манипуляции мышью

12.09.2010, 21:15. Показов 2432. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никто не сталкивался с такой проблемой:
Значек в трее не реагирует на манипуляции мышью. Использую обычный класс, но самое интересное что не в классе дело, т.к. если использовать его на начальном этапе проектирования все работает Ок, но иногода, то ли я компоненты какие добавляю, то ли свойства меняю, перестает реагировать и все тут.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.09.2010, 21:15
Ответы с готовыми решениями:

Отобразить форму по щелчку на значок в трее
Здравствуйте, как я понял код Private Sub Form_Load() Dim OwnerhWnd As Long OwnerhWnd = GetWindow(Me.hwnd, GW_OWNER) Dim ret...

Значок в трее
Здравствуйте. Тут такое дело. Программа при minimize сворачивается в трей, но скрывается с панели т.к. в системе стоит "Скрытие...

Комп не реагирует ни на какие манипуляции
Привет всем. Суть проблемы в следующем: Windows перестал работать. Симптомы просты донельзя: после появления картинки WinXP комп...

9
Comanche
13.09.2010, 11:49
http://www.vbnet.ru/faq/showtopic.asp?id=181
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24
14.09.2010, 21:02  [ТС]
К сожалению ваша ссыка мне не поможет. Как я уже сказал выше вначале все работает и трей реагирует на мышь, но иногда каким бы образом я не помещал значек в трей он не реагирует на мышь! А как помещать значек в трей я знаю.
0
Black Star
14.09.2010, 23:58
Что-то похожее у меня было. Там все события зависят от Х. Точно сказать не могу, кинь код процедуры Form_MouseMove, может найду глюк.
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24
15.09.2010, 22:50  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
Option Explicit
' Константы и структуры
'-------------------------------------------------
Private Const NOTIFYICON_VERSION = &H3
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_NULL = &H0
 
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4
Private Const NIF_STATE = &H8
Private Const NIF_INFO = &H10
 
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIM_SETFOCUS = &H3
Private Const NIM_SETVERSION = &H4
Private Const NIM_VERSION = &H5
 
Private Const NIS_HIDDEN = &H1
Private Const NIS_SHAREDICON = &H2
 
   
Private Const WM_USER = &H400
Private Const NIN_BALLOONSHOW = (WM_USER + 2)
Private Const NIN_BALLOONHIDE = (WM_USER + 3)
Private Const NIN_BALLOONTIMEOUT = (WM_USER + 4)
Private Const NIN_BALLOONUSERCLICK = (WM_USER + 5)
 
'shell version / NOTIFIYICONDATA struct size constants
Private Const NOTIFYICONDATA_V1_SIZE As Long = 88  'pre-5.0 structure size
Private Const NOTIFYICONDATA_V2_SIZE As Long = 488 'pre-6.0 structure size
Private Const NOTIFYICONDATA_V3_SIZE As Long = 504 '6.0+ structure size
Private NOTIFYICONDATA_SIZE As Long
 
Private Type GUID
   Data1 As Long
   Data2 As Integer
   Data3 As Integer
   Data4(7) As Byte
End Type
 
Private Type NOTIFYICONDATA
  cbSize As Long
  hwnd As Long
  uID As Long
  uFlags As Long
  uCallbackMessage As Long
  hIcon As Long
  szTip As String * 128
  dwState As Long
  dwStateMask As Long
  szInfo As String * 256
  uTimeoutAndVersion As Long
  szInfoTitle As String * 64
  dwInfoFlags As Long
  guidItem As GUID
End Type
'-----------------------------------------------------
' Объявление API функций
'-----------------------------------------------------
Private Declare Function Shell_NotifyIcon Lib 'shell32.dll' _
   Alias 'Shell_NotifyIconA' _
  (ByVal dwMessage As Long, _
   lpData As NOTIFYICONDATA) As Long
 
Private Declare Function GetFileVersionInfoSize Lib 'version.dll' _
   Alias 'GetFileVersionInfoSizeA' _
  (ByVal lptstrFilename As String, _
   lpdwHandle As Long) As Long
 
Private Declare Function GetFileVersionInfo Lib 'version.dll' _
   Alias 'GetFileVersionInfoA' _
  (ByVal lptstrFilename As String, _
   ByVal dwHandle As Long, _
   ByVal dwLen As Long, _
   lpData As Any) As Long
   
Private Declare Function VerQueryValue Lib 'version.dll' _
   Alias 'VerQueryValueA' _
  (pBlock As Any, _
   ByVal lpSubBlock As String, _
   lpBuffer As Any, _
   nVerSize As Long) As Long
 
Private Declare Sub CopyMemory Lib 'kernel32' _
   Alias 'RtlMoveMemory' _
  (Destination As Any, _
   Source As Any, _
   ByVal Length As Long)
 
Private Declare Function SetForegroundWindow Lib 'user32' _
    (ByVal hwnd As Long) As Long
 
Private Declare Function PostMessage Lib 'user32' _
    Alias 'PostMessageA' (ByVal hwnd As Long, _
    ByVal wMsg As Long, ByVal wParam As Long, _
    ByVal lParam As Long) As Long
 
'---------------------------------------------------------------------
 
'переменные и структуры модуля
   Private NID              As NOTIFYICONDATA
   Private m_hWnd           As Long
   Private m_Icon           As Long
   Private m_ToolTipText    As String
   Public Enum TrayIcon_InfoIcon
        NIIF_NONE = &H0
        NIIF_INFO = &H1
        NIIF_WARNING = &H2
        NIIF_ERROR = &amp   fMenu
      
   'посылаем сообщение окну
      PostMessage m_hWnd, WM_NULL, 0, 0
 
End Sub
 
'Устанавливаем размер переменной NOTIFYICONDATA_SIZE
'в зависимости от версии оболочки
Private Sub SetShellVersion()
 
   Select Case True
      Case IsShellVersion(6)
         NOTIFYICONDATA_SIZE = NOTIFYICONDATA_V3_SIZE '6.0+ structure size
      
      Case IsShellVersion(5)
         NOTIFYICONDATA_SIZE = NOTIFYICONDATA_V2_SIZE 'pre-6.0 structure size
      
      Case Else
         NOTIFYICONDATA_SIZE = NOTIFYICONDATA_V1_SIZE 'pre-5.0 structure size
   End Select
 
End Sub
 
'Определяем версию оболочки Shell32.dll
Private Function IsShellVersion(ByVal version As Long) As Boolean
 
  'функция возращает Истину если версия оболочки
  '(shell32.dll) равна или больше запрашиваемой
   Dim nBufferSize As Long
   Dim nUnused As Long
   Dim lpBuffer As Long
   Dim nVerMajor As Integer
   Dim bBuffer() As Byte
   
   Const sDLLFile As String = 'shell32.dll'
   
   nBufferSize = GetFileVersionInfoSize(sDLLFile, nUnused)
   
   If nBufferSize > 0 Then
    
      ReDim bBuffer(nBufferSize - 1) As Byte
    
      Call GetFileVersionInfo(sDLLFile, 0&, nBufferSize, bBuffer(0))
    
      If VerQueryValue(bBuffer(0), ' ', lpBuffer, nUnused) = 1 Then
         
         CopyMemory nVerMajor, ByVal lpBuffer + 10, 2
        
         IsShellVersion = nVerMajor >= version
      
      End If
    
   End If
  
End Function
Вот код модуля который я использую...
0
Comanche
16.09.2010, 20:12
Выложи ещё пример работы с этим классом - так быстрее разберёмся.
Black Star
16.09.2010, 22:46
Замени .uCallbackMessage = WM_RBUTTONDOWN на .uCallbackMessage = WM_MOUSEMOVE, а в моде Form_MouseMove добавь
If X=RBUTTONUP Then ...
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24
17.09.2010, 14:01  [ТС]
Пробовал заменять uCallbackMessage, так вообще не работает.
А вот впринципе рабочий пример:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Dim WithEvents cTray As TrayIconAndBalloon
 
Private Sub cmdBalloon_Click()
cTray.DisplayBalloon txtBalloonTitle.Text, txtBalloonText.Text, NIIF_INFO ' + NIIF_NOSOUND
End Sub
 
'загрузка формы
Private Sub Form_Load()
 
   'запрещаем кнопки Удалить и Изменить, скрываем поле
      butModify.Enabled = False
      cmdBalloon.Enabled = False
      butDelete.Enabled = False
            
   'создаем инстанс объекта
      Set cTray = New TrayIconAndBalloon
      
End Sub
 
'выгрущка формы
Private Sub Form_Unload(Cancel As Integer)
 
   'убиваем объект
      Set cTray = Nothing
      
End Sub
 
'добавить иконку в трей
Private Sub butAdd_Click()
   
   'хендл окна
      cTray.hwnd = hwnd
   'иконка, что будет отображена в трее
      cTray.Icon = Icon
   'тултипс (всплывающая подсказка)
      cTray.ToolTipText = 'Просто иконка'
      
   'создаем иконку
      cTray.Add
   
   'разрешаем кнопки Удалить и Изменить, показываем поле, запрещаем кнопку Добавить
      butAdd.Enabled = False
      butModify.Enabled = True
      cmdBalloon.Enabled = True
      butDelete.Enabled = True
         
End Sub
 
'изменить иконку в трее
Private Sub butModify_Click()
 
   'меняем тултипс, можно поменять и Icon
      cTray.ToolTipText = edtToolTip.Text
      
   'меняем иконку
      cTray.Modify
      
End Sub
 
'удалить иконку из трея
Private Sub butDelete_Click()
 
   'удаляем иконку
      cTray.Delete
      
   'запрещаем кнопки Удалить и Изменить, скрываем поле, разрешаем кнопку Добавить
      butAdd.Enabled = True
      butModify.Enabled = False
      cmdBalloon.Enabled = False
      butDelete.Enabled = False
         
End Sub
 
'ловим ивенты на форме
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
   'передаем данные в объект
      cTray.CallEvent X, Y
      
End Sub
 
'ивент срабатывает при действиях на иконке в трее
Private Sub cTray_OnIcon(MouseButton As Integer)
   'обладочная информация
      Debug.Print MouseButton
   
   'левый двойной клик
   '   If MouseButton = TRAYICON_MOUSE_LEFTDBLCLICK Then MsgBox 'LeftDoubleClick on TrayIcon'
   'отжатие правой кнопки мыши
      If MouseButton = TRAYICON_MOUSE_RIGHTUP Then cTray.CallPopupMenu Me, pmnuTray, 2, , , mnuHello
      
End Sub
0
Comanche
17.09.2010, 15:15
Возьми за основу вот этот проект и не парься:
http://www.vbaccelerator.com/home/VB/Code/Libraries/Shell_Projects/SysTray_-_The_Easy_Way/article.asp

В исходниках.
Там и иконка с тултипом, и baloon.
1 / 1 / 0
Регистрация: 18.08.2010
Сообщений: 24
18.09.2010, 15:45  [ТС]
Спасибо интересный пример, наверно так и сделаю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2010, 15:45
Помогаю со студенческими работами здесь

Значок звука в трее
Здравствуйте! Как можно в Windows Seven, добавить значок звука в трее?

Неизвестный значок в трее
Подскажите, что это означает.

Значок в верхнем трее
Подскажите че за буква N, я фиг знаю, девушка спросила, надо знать! )

Новый значок в трее
Недавно появился новый значок в трее. В названии китайский символ. Нажатие правой кнопкой мыши по нему ничего не дает. Как избавиться от...

Непонятный значок в трее
С некоторых пор у меня в трее стал появляться непонятный значок. Смотрите картинку. Если по нему щёлкнуть, он исчезает, и открывается окно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru