1 (изменено: v413ry4nk4, 2021-11-14 01:10:26)

Тема: AHK: Скрытие и отображение нескольких окон по ahk_group

Доброе время суток, форумчане.
Имеется скрипт, по нажатиям в меню в трее должен скрывать/показывать окна одного процесса.
Изначально несколько окон, предварительно объединяю их в группу:

GroupAdd, RakSAMP, ahk_exe RakSAMPClient.exe

После этого скрываю их, функция скрытия:

hide() {
    global

    WinHide, ahk_group RakSAMP
    hide := 1
    Menu, Windows, Check, Скрыть
    Menu, Windows, UnCheck, Показать
  }

Окна скрываются успешно, а обратно отобразить не получается, функция отображения:

show() {
    global

    WinShow, ahk_group RakSAMP
    hide := 0
    Menu, Windows, Check, Показать
    Menu, Windows, UnCheck, Скрыть
  }

Вызов функций осуществляется через метки, метки вызываются из меню:

Menu, Windows, Add, Показать, lShow
Menu, Windows, Add, Скрыть, lHide
Menu, Tray, Add, Окна, :Windows 

lHide:
    hide()
Return

lShow:
    show()
Return

Заранее спасибо.

2

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

Не совсем понятно, зачем вы вызываете функции через метки, проще вызвать их напрямую. Для начала проверьте, вызывается ли соответствующая функция.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

Не все окна могут быть так легко скрыты. Возможно стиль какой мешает и его нужно сначала отключить.
Все стили можно узнать через программу AhkSpy.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

teadrinker
К сожалению не знаю, как вызвать напрямую, когда параметром принимается только название метки. Добавил MsgBox  в каждую из функций для проверки - всё работает исправно.

5

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

__Михаил__
Скрыть как раз таки получается, не получается показать после скрытия.

6

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

Возможно нужно убрать некоторые стили у окон, тогда их можно будет восстановить.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

Попробуйте скрыть/восстановить проблемное окно без добавления в группу.

v413ry4nk4 пишет:

не знаю, как вызвать напрямую, когда параметром принимается только название метки

Справка пишет:

[v1.1.20+]: If it is not the name of an existing label, LabelOrSubmenu can be the name of a function

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8 (изменено: v413ry4nk4, 2021-11-14 18:56:51)

Re: AHK: Скрытие и отображение нескольких окон по ahk_group

teadrinker
Спасибо за указание про вызов функций без меток, разобрался, буду знать.

teadrinker пишет:

Попробуйте скрыть/восстановить проблемное окно без добавления в группу.

Без добавления в группу окно скрывалось при указании ahk_exe, и однократно восстанавливалось, после повторного скрытия восстановить не получилось.
С указанием ahk_pid, так же, как и ahk_class, всё заработало, как мне нужно.
Поэтому решением стало создание группы по ahk_class ConsoleWindowClass.
Всем спасибо за помощь.