Автор Тема: Меню в трее по правой кнопке мыши  (Прочитано 843 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kyi [?]

  • Новичок
  • *
  • Сообщений: 43
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый день!
Хочу что бы при клике левой кнопкой мыши на иконке в трее программа разворачивалась, а при нажатии правой кнопкой мыши появлялось доп меню
Сейчас делаю так
(нажмите для показа/скрытия)
При таком раскладе меню создается всегда, хоть нажимаю левой кнопкой, хоть правой.
Начинаю думать как от этого избавиться и при чтении справки нахожу событие $TRAY_EVENT_SECONDARYDOWN
Мысль работает так. Если нажимать правую кнопку, то надо вызывать функцию которая будет создавать меню по этому событию - делаю
(нажмите для показа/скрытия)
но получаю повторяющиеся меню и нестабильную работу программы.
Товарищи, подскажите идею как можно выполнить мою задумку?
Только очень прошу, рассказывайте как можно проще и подробнее.

Русское сообщество AutoIt

Меню в трее по правой кнопке мыши
« Отправлен: Май 24, 2018, 21:33:52 »

Помечен как лучший ответ пользователем kyi Отправлен Май 25, 2018, 11:03:53

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Меню в трее по правой кнопке мыши
« Ответ #1, Отправлен: Май 24, 2018, 21:59:34 »
В описании функций есть все подробности
Код: AutoIt [Выделить]
#NoTrayIcon ;не показывать иконку в трее

#include <StaticConstants.au3>
#include <GUIConstantsEx.au3>
#include <TrayConstants.au3>
#include <WindowsConstants.au3>
#include <GuiButton.au3>

Opt("TrayMenuMode", 1 + 2) ; Не отображать в трее пункты меню по умолчанию (Script Paused/Exit) и не отмечать галочками при выборе.
Global $nTrayTest1 = TrayCreateItem("Test1")
Global $nTrayTest2 = TrayCreateItem("Test2")
TrayCreateItem("")
Global $nTrayExit = TrayCreateItem("Выход")
TraySetClick(16) ; Устанавливает способ вызова меню трея: 16 = Отпусканием вторичной кнопки мыши

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
            TraySetState($TRAY_ICONSTATE_SHOW) ; Включает отображение иконки в трее
            GUISetState(@SW_HIDE) ; Сворачивает окно в трей
    EndSwitch

    ; Восстанавливает из трея
    Switch TrayGetMsg()
        Case $TRAY_EVENT_PRIMARYUP
            TraySetState($TRAY_ICONSTATE_HIDE)
            GUISetState(@SW_SHOW)
        Case $nTrayExit
            Exit
        Case $nTrayTest1
            MsgBox(0, "", "Test1")
        Case $nTrayTest2
            MsgBox(0, "", "Test2")
    EndSwitch
WEnd
 


Оффлайн kyi [?]

  • Новичок
  • *
  • Сообщений: 43

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Меню в трее по правой кнопке мыши
« Ответ #2, Отправлен: Май 25, 2018, 10:27:35 »
В описании функций есть все подробности
Эээээ... не понял, где вы функцию прописали с подробностями?

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Меню в трее по правой кнопке мыши
« Ответ #3, Отправлен: Май 25, 2018, 10:30:20 »
kyi, клик по названию функции поможет вам найти описание


Добавлено: Май 25, 2018, 10:34:35
Или скопировать описание каждой функции в код?

Русское сообщество AutoIt

Re: Меню в трее по правой кнопке мыши
« Ответ #3 Отправлен: Май 25, 2018, 10:30:20 »

Оффлайн kyi [?]

  • Новичок
  • *
  • Сообщений: 43

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Меню в трее по правой кнопке мыши
« Ответ #4, Отправлен: Май 25, 2018, 10:49:10 »
kyi, клик по названию функции поможет вам найти описание


Добавлено: Май 25, 2018, 10:34:35
Или скопировать описание каждой функции в код?
Видимо я чего то не понимаю. Где функция? Я не вижу что бы у вас где то было
Func ()
...
EndFunc

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 401
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Меню в трее по правой кнопке мыши
« Ответ #5, Отправлен: Май 25, 2018, 10:53:06 »
kyi, в коде используются только нативные функции. Почему там должно быть Func...EndFunc?


Добавлено: Май 25, 2018, 10:54:37
Ваши вопросы легко решаются чтением справки вот что я пытаюсь сказать


Добавлено: Май 25, 2018, 10:56:42
Если бы вы её читали то увидели что для определения события которое должно вызывать меню используется функция TraySetClick и отдельная обработка событий тут не при чём
« Последнее редактирование: Май 25, 2018, 10:59:20 от Tempo »

Русское сообщество AutoIt

Re: Меню в трее по правой кнопке мыши
« Ответ #5 Отправлен: Май 25, 2018, 10:53:06 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
7 Ответов
4419 Просмотров
Последний ответ Январь 07, 2012, 02:21:05
от agikon
1 Ответов
2218 Просмотров
Последний ответ Февраль 26, 2012, 21:54:13
от madmasles
1 Ответов
3382 Просмотров
Последний ответ Октябрь 10, 2012, 21:28:17
от Afonichev
3 Ответов
2341 Просмотров
Последний ответ Ноябрь 11, 2013, 16:12:33
от MnM
3 Ответов
2167 Просмотров
Последний ответ Апрель 09, 2015, 20:41:14
от Ksaan
2 Ответов
1025 Просмотров
Последний ответ Январь 26, 2016, 16:15:22
от photozoom
2 Ответов
2325 Просмотров
Последний ответ Май 22, 2016, 12:34:32
от systel
8 Ответов
1158 Просмотров
Последний ответ Март 19, 2017, 15:56:58
от Alofa
4 Ответов
1343 Просмотров
Последний ответ Апрель 21, 2017, 16:28:51
от joiner
2 Ответов
426 Просмотров
Последний ответ Август 28, 2017, 07:19:19
от lixar21