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

Как показать уведомление (сообщение) из трея

16.11.2012, 21:32. Показов 3814. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста как послать уведомление (сообщение) из трея?
У меня такой код для трея:
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
Option Explicit
 
'декларация функций Win32API
   Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) 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
 
'константы и структуры Win32API
   Private Const NIF_MESSAGE = &H1
   Private Const NIF_ICON = &H2
   Private Const NIF_TIP = &H4
   Private Const NIM_ADD = &H0
   Private Const NIM_MODIFY = &H1
   Private Const NIM_DELETE = &H2
   Private Const WM_RBUTTONDOWN = &H204
   Private Const WM_NULL = &H0
   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 NID As NOTIFYICONDATA
 
'---------------------------------------------------------------------
 
'переменные и структуры модуля
   Private m_hWnd          As Long
   Private m_Icon          As Long
   Private m_ToolTipText   As String
   Public Enum TrayIcon_Mouse
      TRAYICON_MOUSE_NONE = 0
      TRAYICON_MOUSE_LEFTDOWN = 1
      TRAYICON_MOUSE_LEFTUP = 2
      TRAYICON_MOUSE_LEFTDBLCLICK = 3
      TRAYICON_MOUSE_RIGHTDOWN = 4
      TRAYICON_MOUSE_RIGHTUP = 5
      TRAYICON_MOUSE_RIGHTDBLCLICK = 6
   End Enum
 
'ивенты
   Public Event OnIcon(MouseButton As Integer)
   
 
'---------------------------------------------------------------------
'  Свойства
 
'получить свойство hWnd
Public Property Get hwnd() As Long
      hwnd = m_hWnd
End Property
 
'присвоить свойство hWnd
Public Property Let hwnd(ByVal NewValue As Long)
      m_hWnd = NewValue
End Property
 
 
'получить свойство Icon
Public Property Get Icon() As Long
      Icon = m_Icon
End Property
 
'присвоить свойство Icon
Public Property Let Icon(ByVal NewValue As Long)
      m_Icon = NewValue
End Property
 
 
'получить свойство ToolTipText
Public Property Get ToolTipText() As String
      ToolTipText = m_ToolTipText
End Property
 
'присвоить свойство ToolTipText
Public Property Let ToolTipText(ByVal NewValue As String)
      m_ToolTipText = NewValue
End Property
 
'---------------------------------------------------------------------
'  Методы
 
'добавление иконки в Tray
Public Sub Add()
   Dim ret As Long
      
   'заполняем структуру
      NID.uID = m_hWnd
      NID.hwnd = m_hWnd
      NID.hIcon = m_Icon
      NID.szTip = Left$(m_ToolTipText, 63) & Chr$(0)
      NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON
      NID.uCallbackMessage = WM_RBUTTONDOWN
      NID.cbSize = Len(NID)
    
   'вызываем функцию API
      ret = Shell_NotifyIcon(NIM_ADD, NID)
      
End Sub
 
 
 
 
'удаление иконки из Tray
Public Sub Delete()
   Dim ret As Long
   
   'заполняем структурку
      NID.cbSize = Len(NID)
   
   'вызываем функцию API
      ret = Shell_NotifyIcon(NIM_DELETE, NID)
      
End Sub
 
 
'вызвать ивент
Public Sub CallEvent(X As Single, Y As Single)
   'проверка, было ли действие по окну или по иконке в трее
      If Y Then Exit Sub
      
   'получаем тип действия
      Dim MouseButton As Integer
      MouseButton = (X And &HFF) / Screen.TwipsPerPixelX
   
   'генерируем ивент
      RaiseEvent OnIcon(MouseButton)
      
End Sub
 
'вызов всплывающего меню
Public Sub CallPopupMenu(Window As Form, PopMenu As Menu, Optional Flags, Optional X, Optional Y, Optional DefMenu)
      
   'устанавливаем окно
      SetForegroundWindow m_hWnd
      
   'выводим всплывающее меню
      Window.PopupMenu PopMenu, Flags, X, Y, DefMenu
      
   'посылаем сообщение окну
      PostMessage m_hWnd, WM_NULL, 0, 0
 
End Sub
И такой на форме.
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
Dim WithEvents cTray As TrayIcon
'загрузка формы
Private Sub Form_Load()
'создаем инстанс объекта
      Set cTray = New TrayIcon
    'хендл окна
      cTray.hwnd = hwnd
   'иконка, что будет отображена в трее
      cTray.Icon = Icon
   'тултипс (всплывающая подсказка)
      cTray.ToolTipText = "Заметка"
   'создаем иконку
      cTray.Add
      End Sub
 
'выгрущка формы
Private Sub Form_Unload(Cancel As Integer)
'убиваем объект
      Set cTray = Nothing
      End Sub
'удалить иконку из трея
Private Sub butDelete_Click()
'удаляем иконку
      cTray.Delete
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_LEFTUP Then Form1.Visible = True
End Sub
 
Private Sub mnuHello_Click()
Form1.Visible = False
End Sub

Подскажите, что тут дописать, чтоб выскакивали уведомления из трея?
Заранее спасибо?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2012, 21:32
Ответы с готовыми решениями:

Всплывающее сообщение из трея, как сделать?)
Всем доброго времени суток! :) Добавил иконку в трей следующим способом: Private Declare Function Shell_NotifyIcon Lib...

Всплывающее уведомление в области трея
Помогите, ломаю голову несколько дней, как реализовать средствами WinApi? Программа умеет сворачиваться и разворачиваться из трея, вот...

Показать по центру формы уведомление об успешной операции
Добрый день. Подскажите как можно выводить уведомления при успешном выполнении, (например при сохранении в БД, уведомление данные успешно...

12
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
17.11.2012, 02:48
Выложите целый проект.

Можете еще в моем посмотреть.

Вот еще может помочь MS KB176085
Вложения
Тип файла: zip DragoFTP - копия.zip (15.5 Кб, 59 просмотров)
1
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 65
17.11.2012, 23:00  [ТС]
Вот такой проект. Просто я уже в свою программу его вбил, и менять на другой будет плоховато. Т.к. стоит зависимость. Trey.zip
0
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 65
21.11.2012, 12:16  [ТС]
Dragokas, Я скинул проект помогите пожалуйста?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.11.2012, 13:33
Может сделать отдельную форму, и вызывать её когда нужно где-нибудь в углу.
Типа так:
Вложения
Тип файла: rar Трей.rar (6.5 Кб, 64 просмотров)
2
64 / 20 / 1
Регистрация: 29.07.2012
Сообщений: 151
21.11.2012, 13:42
Помню Dragokas что то такое скидывал:
Вложения
Тип файла: rar NotifyIcon.rar (14.8 Кб, 86 просмотров)
0
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 65
21.11.2012, 16:06  [ТС]
brifing, Да, но мне нужно чтоб кто-то помог в моем коде уведомление дописать.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
21.11.2012, 16:24
Цитата Сообщение от dima208-2009 Посмотреть сообщение
моем коде уведомление дописать
Ну это же твой код, я дописал уведомление.

А вот вообще окошко всплывает, как у Аваста
Вложения
Тип файла: rar Трей.rar (6.5 Кб, 95 просмотров)
1
0 / 0 / 0
Регистрация: 03.06.2012
Сообщений: 65
21.11.2012, 16:54  [ТС]
SoftIce, Спасибо, но нужно такое:Название: такое.png
Просмотров: 400

Размер: 7.3 Кб
0
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
23.01.2015, 21:19
Цитата Сообщение от brifing Посмотреть сообщение
Помню Dragokas что то такое скидывал:
Вложения
NotifyIcon.rar (14.8 Кб, 44 просмотров)
самый толковый трей.
Коллеги подскажите как перетянуть вот это (см картинку) в свой проект??
Миниатюры
Как показать уведомление (сообщение) из трея  
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
23.01.2015, 21:25
Project -> Add file
1
39 / 39 / 8
Регистрация: 15.08.2014
Сообщений: 634
23.01.2015, 22:15
Цитата Сообщение от Dragokas Посмотреть сообщение
Project -> Add file
просто перетянуть все файлы из прилагаемого проекта??
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18030 / 7733 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.01.2015, 19:17
NotifyIcon.ctl
NotifyIcon.ctx
Subclasser.bas

скопировать в папку своего проекта. Затем "Проект" -> "Добавить..."
Открыть форму своего проекта. Нажать на значек контрола (восклицательный знак) и "нарисовать" этот контрол у себя на форме.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2015, 19:17
Помогаю со студенческими работами здесь

Показать уведомление, пока идет фильрация (обработка данных)
Уважаемые знатоки, с наступившим Вас Новым годом! Подскажите как прописать код. При нажатии на кнопку стартует обработка данных...

Как реализовать моментальное уведомление о новом сообщение
Добрый день,пишу чат,возникла проблема,попробую объяснить,например пользователь написал сообщение другому пользователю,у пользователя №1...

Сообщение из Трея
Добрый день, подскажие если ли стандартные средства вывода сообщений от иконок в Трее. Тоесть сообщение в виде прямоугольника с...

Как показать сообщение в EXcel?
Est' tablica. po nej nado sdelat' ras4et. Eto dlit'sja sekund 20. 4toby pol'zovatel' znal, 4 to proishodit, ho4u, 4toby : 1. v...

Как показать сообщение с результатом выполнения Ssjs?
На xPage есть кнопка. По клику выполняется какой-то SSJS. Как сделать, что бы после завершения этого SSJS пользователю показывалось...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru