Автор Тема: [Окна, Диалоги] Как свернуть окно в трей посредством AutoIt?  (Прочитано 12540 раз)

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

Оффлайн killbond [?]

  • Осваивающий
  • **
  • Сообщений: 96
  • Репутация: 32
  • Пол: Мужской
    • Награды
Есть некая программа, которую я добавил в автозагрузку, и хотелось бы, чтобы при загрузке она сворачивалась в трей, как это сделать?
Код: AutoIt [Выделить]
Для окна, свернутого в трей возвращает 21, для развернутого - 39. Но для
Код: AutoIt [Выделить]
Эти флаги, к сожалению, не работают  :(
AutoIt - Может ВСЁ!
I will find my way, I will reach the end, I have enough forces!

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


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
WinSetState("title", "", @SW_HIDE) - спрячет окно, для отображения значка в трее можно использовать нечто подобное:

Код: AutoIt [Выделить]
#NoTrayIcon
#include <Constants.au3>

Opt("TrayMenuMode", 1)

Global $sCurrent_Title = ""

HotKeySet("^+h", "_MinimizeWindow_Proc")

While 1
    Switch TrayGetMsg()
        Case $TRAY_EVENT_PRIMARYUP
            _MinimizeWindow_Proc()
    EndSwitch
WEnd

Func _MinimizeWindow_Proc()
    If $sCurrent_Title <> "" Then
        Opt("TrayIconHide", 1)
        WinSetState($sCurrent_Title, "", @SW_SHOW)
        WinActivate($sCurrent_Title)
        $sCurrent_Title = ""
        Return
    EndIf
   
    $sCurrent_Title = WinGetTitle("")
    If $sCurrent_Title = "" Then Return
   
    Opt("TrayIconHide", 0)
    WinSetState($sCurrent_Title, "", @SW_HIDE)
    TraySetToolTip($sCurrent_Title)
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн killbond [?]

  • Осваивающий
  • **
  • Сообщений: 96

  • Автор темы
  • Репутация: 32
  • Пол: Мужской
    • Награды
Как я понял, если окно спрятано, то в трее отображается иконка скрипта, а не самого окна, а если окно развернуто, то иконка скрипта скрыта... хитро, однако  :), спасибо.

Вот как я решил этот вопрос - подменил сворачивание окна программы сворачиванием в трей (в моей ситуации это работает как надо, потому что окно запускается свернутым), т.е. теперь, если нажать на кнопку "Свернуть", окно сворачивается в трей, и это работает до тех пор, пока программа не закрыта, вообщем, код скажет все сам за себя:
Код: AutoIt [Выделить]
#include <Constants.au3>
#NoTrayIcon

Opt("TrayMenuMode", 1)
$sTitle = ""

While WinExists ($sTitle)
    Select
    case WinGetState ($sTitle) = 23
        WinSetState ($sTitle, "", @SW_HIDE)
        Opt("TrayIconHide", 0)
        TraySetToolTip(WinGetTitle(WinGetHandle($sTitle)))
    case TrayGetMsg() = $TRAY_EVENT_PRIMARYUP
        WinSetState ($sTitle, "", @SW_SHOW)
        WinActivate($sTitle)
        Opt("TrayIconHide", 1)
    EndSelect
    sleep (10)
Wend

Но в основе все равно идея CreatoR'a
« Последнее редактирование: Февраль 23, 2010, 08:03:27 от killbond »

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

Re: [Окна, Диалоги] Как свернуть окно в трей посредством AutoIt?
« Ответ #2 Отправлен: Февраль 23, 2010, 01:09:13 »

Оффлайн Afonichev [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1535
  • Репутация: 408
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Вот ещё один вариант:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <APIConstants.au3>
#include <WinAPIEx.au3>

Opt('TrayMenuMode', 3)

$hForm = GUICreate('', 400, 300)
GUISetState(@SW_SHOW, $hForm)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
    Switch TrayGetMsg()
        Case $TRAY_EVENT_PRIMARYDOWN
            If BitAnd(WinGetState($hForm), 2) Then
                _WinAPI_SetWindowLong($hForm, $GWL_HWNDPARENT, WinGetHandle(AutoItWinGetTitle()))
                ;_WinAPI_SetWindowLong($hForm, $GWL_HWNDPARENT, _WinAPI_GetDesktopWindow())
                GUISetState(@SW_HIDE, $hForm)
            Else
                _WinAPI_SetWindowLong($hForm, $GWL_HWNDPARENT, 0)
                GUISetState(@SW_SHOW, $hForm)
            EndIf
    EndSwitch
Wend
 


Кликаем левой кнопкой мыши по иконке в трее, это всё можно сделать так же и на кнопку окна Close или Minimize
« Последнее редактирование: Январь 20, 2013, 03:35:25 от Viktor1703 »

Оффлайн SharkyEXE [?]

  • Новичок
  • *
  • Сообщений: 82
  • Репутация: 0
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем здравствуйте.

Пожалуйста, помогите, научите меня, как использовать это http://autoit-script.ru/index.php?topic=1194.msg8615#msg8615

Так не работает
(нажмите для показа/скрытия)
Точнее работает, окно программы после запуска вышенаписанного скрипта исчезает, однако на панели задач нету значка, в трее есть знакчок, по нему кликаешь что левой кнопкой мышки, что правой кнопкой мышки - контекстное меню не появляется, окно программы не появляется


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 14, 2019, 10:12:13 от SharkyEXE »
Скорблю и помню.


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

Re: [Окна, Диалоги] Как свернуть окно в трей посредством AutoIt?
« Ответ #4 Отправлен: Апрель 14, 2019, 10:05:34 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
5 Ответов
10135 Просмотров
Последний ответ Март 31, 2010, 14:34:57
от Kaster
3 Ответов
3611 Просмотров
Последний ответ Декабрь 23, 2010, 10:33:00
от CreatoR
5 Ответов
4769 Просмотров
Последний ответ Февраль 20, 2011, 02:47:29
от Yashied
7 Ответов
4029 Просмотров
Последний ответ Сентябрь 16, 2011, 09:13:44
от RUVATA
3 Ответов
2553 Просмотров
Последний ответ Февраль 06, 2013, 23:51:41
от beliy
8 Ответов
2018 Просмотров
Последний ответ Июль 30, 2015, 17:45:25
от Yashied
11 Ответов
4668 Просмотров
Последний ответ Сентябрь 21, 2016, 02:02:26
от winix
2 Ответов
1437 Просмотров
Последний ответ Февраль 03, 2017, 10:09:35
от Vovsla
4 Ответов
1339 Просмотров
Последний ответ Февраль 09, 2017, 18:06:02
от reset86
0 Ответов
410 Просмотров
Последний ответ Декабрь 21, 2017, 04:37:05
от lixar21