Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Свернул прогу в трей. А как отловить потом клики по иконке в трее?

266
19 ноября 2004 года
mhaturov
901 / / 23.10.2003
Извиняюсь за долгое молчание, но вот приходится опять писать.
Трабл следующий. "Свернул в трей" прогу - грубо говоря, спрятал форму, а в трей кинул иконку. А как отловить потом клик по этой иконке?
266
19 ноября 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Извиняюсь за долгое молчание, но вот приходится опять писать.
Трабл следующий. "Свернул в трей" прогу - грубо говоря, спрятал форму, а в трей кинул иконку. А как отловить потом клик по этой иконке?



Всё, не надо. Разобрался уже.

Код:
'МАХ Проект сервера для печати визовых анкет. Начат М.Шатуровым 18.11.2004
Option Explicit
Private TrayI As NOTIFYICONDATA

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

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 Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
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_RBUTTONUP = &H205

Private Sub form_MouseDown(Button As Integer, _
      Shift As Integer, _
      X As Single, _
      Y As Single)

Dim Msg As Long

    Msg = X / Screen.TwipsPerPixelX
    If Msg = WM_LBUTTONDBLCLK Then
        'Left button double click
        Hide_Click
    ElseIf Msg = WM_RBUTTONUP Then
        'Right button click
        Hide_Click
    End If
End Sub


Private Sub Form_Load()
   
    'МАХ Свёртываю в трей
    TrayI.cbSize = Len(TrayI)
    TrayI.hWnd = Me.hWnd
    TrayI.uId = 1&
    TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    TrayI.ucallbackMessage = WM_LBUTTONDOWN
    TrayI.hIcon = Me.Icon 'imgIcon(2).Picture
    TrayI.szTip = "VKO Anketa Print Server" & Chr$(0)
    Shell_NotifyIcon NIM_ADD, TrayI
    Me.Hide

End Sub

Private Sub Form_Unload(Cancel As Integer)
  'remove the icon
    TrayI.cbSize = Len(TrayI)
    TrayI.hWnd = Me.hWnd
    TrayI.uId = 1&
    Shell_NotifyIcon NIM_DELETE, TrayI
End Sub

Private Sub Hide_Click()
  If Me.Visible Then
      Me.Hide
    Else
      Me.Show
  End If
End Sub

почти полностью содрано с http://www.vb.kiev.ua/ref/w32api/showdoc.php?f=shell_notifyicon
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог