Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Бакалавр
Рейтинг: 2639
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1371
∙ повысить рейтинг »
Megaloman
Статус: Бакалавр
Рейтинг: 1067
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:992
Дата выхода:07.03.2010, 22:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:343 / 99
Вопросов / ответов:1 / 2

Вопрос № 177015: Уважаемые Знатоки(Эксперты)! Поясните пож-та, возможно ли средствами VB 6.0 при старте свернуть проект в панель быстрого запуска, для задачи пакетной обработки и с помощью наведения курсора, на пиктограмму получить всплывающее окно со статистикой выч...



Вопрос № 177015:

Уважаемые Знатоки(Эксперты)! Поясните пож-та, возможно ли средствами VB 6.0 при старте свернуть проект в панель быстрого запуска, для задачи пакетной обработки и с помощью наведения курсора, на пиктограмму получить всплывающее окно со статистикой вычисляемой в этом же проекте. Рекомендуемое для этого свойство формы ShowInTaskBar=false в режиме Run Time - не работает, а использование его в режиме разработки сворачивает проект только в панель задач. Если нет, то к какой функции API- можно обратиться? Благодарю!

Отправлен: 02.03.2010, 21:31
Вопрос задал: Pencho R.O., Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Благодарев Евгений Сергеевич, 1-й класс :
Эта область называется не "панель быстрого запуска" а "Область уведомления" (Tray).

http://www.nestor.minsk.by/kg/2003/19/kg31904.html - вот тут грамотный, хорошо расписанный пример.
http://forum.sources.ru/index.php?act=Attach&type=post&id=507569 - тут пример ocx для этой цели.

Ответ отправил: Благодарев Евгений Сергеевич, 1-й класс
Ответ отправлен: 02.03.2010, 22:13
Номер ответа: 259848

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 259848 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Vasiliy83, Бакалавр :
    Здравствуйте, Pencho R.O..
    Вот рабочий код именно для VB 6.0

    TrayIcon.cls:
    Код:
    '*********************************************************************
    '* TrayIcon *
    '* Библиотека для работы с SystemTray *
    '*-------------------------------------------------------------------*
    '
    ' Ивенты:
    ' OnIcon ( MouseButton as integer )
    ' ; генерируется при действии над иконкой в трее.
    ' ; MouseButton соответствует - Enum TRAYICON_MOUSE_*.
    ' Свойства:
    ' hWnd (Long) ; hWnd окна, к которому привязана иконка
    ' Icon (Long) ; у казатель на иконку. Иконка должна быть 16 цветная.
    ' ToolTipText ; всплывающий текст
    '
    ' Методы:
    ' Add ( ) ; добавление иконки в трей. Заранее нужно установить все свойства.
    ' Modify ( ) ; изменение иконки в трее.
    ' Delete ( ) ; удаление иконки из трея
    ' CallEvent ( X as single, Y as single )
    ' ; вызывается из Form_MouseDown, ей передаются значения X и Y
    '
    '---------------------------------------------------------------------
    ' Version 0.90 Beta * Copyright (с) А.Щербаков * May 17, 2000
    '*********************************************************************
    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 Lo ng
    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

    'изменение иконки и ToolTip в Tray
    Public Sub Modify()
    Dim ret As Long

    'заполняем структурку
    NID.hIcon = m_Icon
    NID.szTip = Left$(m_ToolTipText, 63) & Chr$(0)
    NID.uFlags = NIF_TIP + NIF_ICON
    NID.cbSize = Len(NID)

    'вызываем функцию API
    ret = Shell_NotifyIcon(NIM_MODIFY, 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


    код для формы:
    Код:
    Private Sub Form_Load()

    Set cTray = New TrayIcon
    'хендл окна
    cTray.hwnd = hwnd
    'иконка, что будет отображена в трее
    cTray.Icon = frmIco.Icon

    'тултипс (всплывающая подсказка)
    cTray.ToolTipText = "Текст подсказки"

    'создаем иконку
    cTray.Add
    Me.Visible = False

    End Sub

    'процедура нажатия на кнопку минимизации
    Private Sub cmdMin_Click()
    Set cTray = New TrayIcon
    'хендл окна
    cTray.hwnd = hwnd
    'иконка, что будет отображена в трее
    cTray.Icon = frmIco.Icon

    'тултипс (всплывающая подсказка)
    cTray.ToolTipText = " Текст подсказки"

    'создаем иконку
    cTray.Add
    Me.Visible = 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)
    'левый двойной клик
    If MouseButton = TRAYICON_MOUSE_LEFTDBLCLICK Then
    Me.Visible = True
    Me.Hide
    Me.Show
    MouseButton = TRAYICON_MOUSE_RIGHTDOWN
    End If
    End Sub

    Ответ отправил: Vasiliy83, Бакалавр
    Ответ отправлен: 02.03.2010, 23:24
    Номер ответа: 259854

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 259854 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное