Добрый день!
Хочу что бы при клике левой кнопкой мыши на иконке в трее программа разворачивалась, а при нажатии правой кнопкой мыши появлялось доп меню
Сейчас делаю так
При таком раскладе меню создается всегда, хоть нажимаю левой кнопкой, хоть правой.
Начинаю думать как от этого избавиться и при чтении справки нахожу событие $TRAY_EVENT_SECONDARYDOWN
Мысль работает так. Если нажимать правую кнопку, то надо вызывать функцию которая будет создавать меню по этому событию - делаю
но получаю повторяющиеся меню и нестабильную работу программы.
Товарищи, подскажите идею как можно выполнить мою задумку?
Только очень прошу, рассказывайте как можно проще и подробнее.
Хочу что бы при клике левой кнопкой мыши на иконке в трее программа разворачивалась, а при нажатии правой кнопкой мыши появлялось доп меню
Сейчас делаю так
Код:
#NoTrayIcon ;не показывать иконку в трее
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <TrayConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
Local $test = GUICreate("test",350,214,-1,-1,-1,-1)
GUISetState(@SW_SHOW,$test)
; Создаем меню в трее
$TrayTest1 = TrayCreateItem('Test1') ; Создает меню при клике на иконке в трее
$TrayTest2 = TrayCreateItem('Test2')
TrayCreateItem('') ; Создает разделитель
$TrayExit = TrayCreateItem('Выход')
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
; Проверка нажат ли крестик на окне если нажат, то выходим
Case $GUI_EVENT_CLOSE
Exit
; Проверка нажата ли кнопка Свернуть, если нажата, сворачиваем в трей
Case $GUI_EVENT_MINIMIZE
Opt("TrayIconHide", 0) ; Включает отображение иконки в трее
GUISetState(@SW_HIDE) ; Сворачивает окно в трей
EndSwitch
; Восстанавливает из трея
Switch TrayGetMsg()
Case $TRAY_EVENT_PRIMARYUP
Opt("TrayIconHide", 1)
GUISetState(@SW_SHOW)
EndSwitch
WEnd
Начинаю думать как от этого избавиться и при чтении справки нахожу событие $TRAY_EVENT_SECONDARYDOWN
Мысль работает так. Если нажимать правую кнопку, то надо вызывать функцию которая будет создавать меню по этому событию - делаю
Код:
#NoTrayIcon ;не показывать иконку в трее
#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <TrayConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
Local $test = GUICreate("test",350,214,-1,-1,-1,-1)
GUISetState(@SW_SHOW,$test)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
; Проверка нажат ли крестик на окне если нажат, то выходим
Case $GUI_EVENT_CLOSE
Exit
; Проверка нажата ли кнопка Свернуть, если нажата, сворачиваем в трей
Case $GUI_EVENT_MINIMIZE
Opt("TrayIconHide", 0) ; Включает отображение иконки в трее
GUISetState(@SW_HIDE) ; Сворачивает окно в трей
EndSwitch
; Восстанавливает из трея
Switch TrayGetMsg()
Case $TRAY_EVENT_PRIMARYUP
Opt("TrayIconHide", 1)
GUISetState(@SW_SHOW)
Case $TRAY_EVENT_SECONDARYDOWN
MenuTray()
EndSwitch
WEnd
; Функция создания меню в трее
Func MenuTray()
$TrayTest1 = TrayCreateItem('Test1') ; Создает меню при клике на иконке в трее
$TrayTest2 = TrayCreateItem('Test2')
TrayCreateItem('') ; Создает разделитель
$TrayExit = TrayCreateItem('Выход')
EndFunc
Товарищи, подскажите идею как можно выполнить мою задумку?
Только очень прошу, рассказывайте как можно проще и подробнее.