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

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

12.09.2010, 21:15. Показов 2401. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru