Тема: AHK v2: Аналог Menu, Tray, Click
Не найду в v2 в документации аналог Menu, Tray, Click
Может не так искал, подскажите.
Или вообще не пытаться кодить на v2, а остаться на старом добром v1?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Не найду в v2 в документации аналог Menu, Tray, Click
Может не так искал, подскажите.
Или вообще не пытаться кодить на v2, а остаться на старом добром v1?
А аналог чего именно вы ищете? Не совсем понял. Разве в v1 есть Menu, Tray, Click?
На клик по иконке в трее программа показывается/скрывается
Показать:
IfWinExist, %Title%
Gui, Destroy
Menu, Tray, Tip, %Title%
Menu, Tray, NoStandard
Menu, Tray, add, Показать
Menu, Tray, Default, Показать
Menu, Tray, add, Выход
Menu, Tray, Click, 1Как аналогично сделать в v2?
Так, как у вас написано, не стоит делать ни во второй, ни даже в первой версии. Вы при каждом выполнении метки зачем-то пересоздаёте меню заново. Достаточно создать меню один раз. Но я не вижу здесь показа/скрытия какой-либо программы, вижу только закрытие GUI. Приведите код, по которому можно понять, чего именно вы хотите, или поясните более внятно на словах.
Заходите в справку:
https://www.autohotkey.com/docs/v1/lib/Menu.htm
Нажимаете сверху V1, меняете на V2.
На странице ищете слово Click.
Или вообще не пытаться кодить на v2, а остаться на старом добром v1?
Если времени девать некуда, то можете поизучать, хотя я бы лучше потратил его на более перспективные ЯП.
более перспективные ЯП
Какую перспективу ты имеешь в виду?
Языки, которые пользуются спросом, разумеется.
Например: Python, typesript.
А переходить на ahk v2 с ahk v1 - это шило на мыло.
Спросом у кого? У работодателей? Не думаю, что ТС собирается получать заказы. AHK несоизмеримо проще, чем то, что ты упомянул. А я, как человек, изучивший v2, заверяю, что времени на это уходит немного, если хорошо знать v1, а писать на нём в разы быстрее, и, главное, приятнее.
AHK - это cmd, каким он должен бы быть, но каким он не есть. Перспектива - распространение на другие платформы. V2 лучше V1 хотя бы меньшим количеством запятых, от которых рябит в глазах. От фигурных скобок тоже рябит в глазах, в V3 их уберут, надеюсь ))
писать на нём в разы быстрее, и, главное, приятнее.
Тут уже дело вкуса. Я хоть и не более десятка написал - кайфа не получил.
И в разы быстрее - это ты уже загнул.
AHK несоизмеримо проще, чем то, что ты упомянул
С нынешним уровнем chat gpt не совсем проще.
Он на пайтоне скрипт набросает и разъяснит быстрее, чем кто-либо напишет такой же на ahk.
От фигурных скобок тоже рябит в глазах, в V3 их уберут, надеюсь
Ну не знаю, тут бы хватило мотивации у lexikos v2.1 закончить...
Я хоть и не более десятка написал - кайфа не получил.
И в разы быстрее - это ты уже загнул
Язык более логичный, соответственно, кто любит именно программирование, получит большее удовольствие. Нет, действительно быстрее получается, по той же причине. Ну, может и не в разы, но заметно.
С нынешним уровнем chat gpt не совсем проще.
Он на пайтоне скрипт набросает и разъяснит быстрее, чем кто-либо напишет такой же на ahk.
Ну, вот, например, приемлемый уровень? ![]()
AHK - это cmd, каким он должен бы быть, но каким он не есть.
Вот странная мысль. Разве в cmd есть работа с окнами, горячими клавишами? Или классы?
Может, имеется в виду powershell?
Ну, вот, например, приемлемый уровень?
Приемлимый. ![]()
Я не совсем в теме, но предполагаю, что на пайтоне уже написаны готовые библиотеки для этого.
Ну и подобное можно написать и на ahk v1, зная winapi и понимая алгоритмы.
teadrinker
Так нету. И в Python вроде нет работы с окнами и горячих клавиш. Я о том, что у AHK есть конкретное предназначение, функционал, отсутствующий в других языках.
Ошибаетесь, в пайтон есть все, что есть в автохотки и много чего еще. Единственное, в чем ahk не превзойти, так это в скорости и надежности переназначении клавиш. Хотя и тут можно постараться приблизиться.
Malcev
Не знал. С пайтоном знаком по учебнику для начинающих.
Так, как у вас написано, не стоит делать ни во второй, ни даже в первой версии. Вы при каждом выполнении метки зачем-то пересоздаёте меню заново. Достаточно создать меню один раз. Но я не вижу здесь показа/скрытия какой-либо программы, вижу только закрытие GUI. Приведите код, по которому можно понять, чего именно вы хотите, или поясните более внятно на словах.
Добро, переписал. Клик по иконке скрипта в трее показывает/скрывает окно программы (Gui). Хочу аналогично сделать в v2. Возможно ли?
Title = Connect
Menu, Tray, Tip, %Title%
Menu, Tray, NoStandard
Menu, Tray, add, Показать
Menu, Tray, Default, Показать
Menu, Tray, add, Выход
Menu, Tray, Click, 1
; ********************************
Gui, -Resize ToolWindow +AlwaysOnTop
Gui, Add, Button, x5 y5 w60 gПоказать, Hide
Gui, Show, x100 y100, %Title%
Return
; ********************************
Показать:
IfWinExist, %Title%
Gui Hide
else
Gui Show
Return
; ********************************
Выход:
ExitAppА по сути оффтопа по поводу AHK - согласен на 100% с ув. teadrinker.
Добавлю, что такого низкого порога вхождения нет ни у одного языка программирования.
В своей нише у него нет равных.
А этот код разве запускается? У меня выдаёт ошибку.
Должно быть примерно так:
#Requires AutoHotkey v2
Persistent
guiTitle := 'Заголовок окна'
wnd := CreateGui(guiTitle)
CreateTrayMenu(guiTitle, wnd)
CreateGui(title) {
wnd := Gui('ToolWindow AlwaysOnTop', title)
wnd.OnEvent('Close', ShowHideGui)
wnd.AddButton('w200', 'Скрыть').OnEvent('Click', ShowHideGui.Bind(wnd))
wnd.Show('x100 y100')
return wnd
}
CreateTrayMenu(title, gui) {
A_TrayMenu.Delete()
A_IconTip := title
A_TrayMenu.Add('Скрыть', ShowHideGui.Bind(gui))
A_TrayMenu.Add('Выход', (*) => ExitApp())
A_TrayMenu.Default := '1&'
A_TrayMenu.ClickCount := 1
}
ShowHideGui(gui, *) {
WinExist('ahk_id ' . gui.hwnd) ? (gui.Hide(), A_TrayMenu.Rename('Скрыть', 'Показать'))
: (gui.Show(), A_TrayMenu.Rename('Показать', 'Скрыть'))
}teadrinker
Прекрасно работает! Продолжу изучать v2 значит)
Почему же я нигде не нашел, что у ClickCount есть событие нажатия, все доки и форумы перерыл - нету. Либо не так искал.
Свой код поправил, теперь должен работать.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться