Автор Тема: Свернул окно в трей, а развернуть не могу  (Прочитано 244 раз)

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

Оффлайн kyi [?]

  • Новичок
  • *
  • Сообщений: 43
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый день!
Задумка у меня такова, что пока окно программы развернуто, в трее иконки быть не должно, как только сворачиваю в трей, должна появиться иконка. При клике на иконке окно программы должно обратно развернуться и иконка в трее пропасть.
Читая справку и примеры на форуме свернуть окно в трей сумел, а развернуть не получается, выдает ошибку.
Подскажите в чем моя ошибка?
Код: AutoIt [Выделить]
#NoTrayIcon ;не показывать иконку в трее

#include <StaticConstants.au3>
#include <GUIConstantsEx.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)   ; Сворачивает окно в трей

; Вот эта часть не работает
        Case TrayGetMsg() = $TRAY_EVENT_PRIMARYUP
            Opt("TrayIconHide", 1)
            GUISetState(@SW_SHOW)

    EndSwitch
WEnd


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

Свернул окно в трей, а развернуть не могу
« Отправлен: Май 19, 2018, 18:26:57 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3782
  • Репутация: 998
    • Награды
  • Версия AutoIt: 3.3.14.0
GUIGetMsg() обрабатывает оконные события, а TrayGetMsg() - события трея. Поэтому в одном цикле нужно делать два switch'а - для каждой функции свой.

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 369
  • Репутация: 89
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Или использовать TrayOnEventMode
Код: AutoIt [Выделить]
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <TrayConstants.au3>
Opt("TrayMenuMode", 1 + 2)
Opt("TrayOnEventMode", 1)

GUICreate("", 350, 215)
TraySetOnEvent($TRAY_EVENT_PRIMARYUP, "_GUIShow")
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $GUI_EVENT_MINIMIZE
            TraySetState($TRAY_ICONSTATE_SHOW)
            GUISetState(@SW_HIDE)
    EndSwitch
WEnd

Func _GUIShow()
    TraySetState($TRAY_ICONSTATE_HIDE)
    GUISetState(@SW_SHOW)
EndFunc   ;==>_GUIShow
 


Может описание Switch...Case...EndSwitch поможет вам понять почему выдает ошибку
« Последнее редактирование: Май 19, 2018, 19:16:57 от Tempo »

Оффлайн kyi [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
InnI, не понял вас. Можете как то сказать по другому, так что бы понял даже валенок типа меня.
Tempo, вот сколько примеров не смотрел на форуме, почему то 99% используют функцию.
Функции меня пока вводят в ступор (мозг не поспевает за прыганием кода).
Можно ли как то обойтись без функции?

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

Re: Свернул окно в трей, а развернуть не могу
« Ответ #3 Отправлен: Май 19, 2018, 19:25:48 »

Онлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 369
  • Репутация: 89
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
kyi, в режиме OnEvent нет. Используйте вариант который предложил InnI если хотите обойтись без объявления функций

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3782
  • Репутация: 998
    • Награды
  • Версия AutoIt: 3.3.14.0
kyi  [?]
Цитировать
что бы понял даже валенок типа меня
Языком валенок не владею. Но могу показать на примере
(нажмите для показа/скрытия)

Оффлайн kyi [?]

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

  • Автор темы
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
InnI, Tempo, спасибо. Пошел разбираться.
Как же отвратительно когда нет нормальных книг.
В свое время Basic на ZXSpectrum изучил в одиночку, исключительно по книгам, а тут чего то с документацией вообще все плохо  :blink:

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3782
  • Репутация: 998
    • Награды
  • Версия AutoIt: 3.3.14.0
kyi
Откройте русскую справку по AutoIt и прочтите её с самого начала и до конца всё подряд. Другими словами, прочтите справку, как книгу. Тогда вы поймёте, что справка по AutoIt - это учебник по AutoIt ;)

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

Re: Свернул окно в трей, а развернуть не могу
« Ответ #7 Отправлен: Май 19, 2018, 20:26:17 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
2843 Просмотров
Последний ответ Июль 18, 2011, 16:08:58
от Kaster
16 Ответов
8582 Просмотров
Последний ответ Сентябрь 07, 2011, 21:34:03
от at
3 Ответов
3208 Просмотров
Последний ответ Январь 05, 2012, 13:38:38
от agikon
4 Ответов
6732 Просмотров
Последний ответ Апрель 13, 2012, 18:18:30
от iamOmg
11 Ответов
4380 Просмотров
Последний ответ Октябрь 08, 2013, 11:16:35
от InnI
2 Ответов
2041 Просмотров
Последний ответ Январь 30, 2014, 22:15:36
от InnI
4 Ответов
2325 Просмотров
Последний ответ Май 19, 2015, 17:45:15
от sumoto
2 Ответов
2235 Просмотров
Последний ответ Март 18, 2016, 09:55:09
от Vovsla
2 Ответов
883 Просмотров
Последний ответ Февраль 03, 2017, 10:09:35
от Vovsla
2 Ответов
775 Просмотров
Последний ответ Июль 09, 2017, 19:53:58
от Garrett