Тема: AHK v2: Новые возможности AHK v2
Пока такие вопросы:
Что то появилось по защите исходного кода?
Есть ли многопоточность?
Есть ли DLL аналогично AHK_H?
Какие новые возможности добавлены?
Win10x64 AhkSpy, Hotkey, ClockGui
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пока такие вопросы:
Что то появилось по защите исходного кода?
Есть ли многопоточность?
Есть ли DLL аналогично AHK_H?
Какие новые возможности добавлены?
1) Нет.
2) Нет.
3) Нет.
4) https://www.autohotkey.com/docs/v2/v2-changes.htm
Всё тяжело прочитать. Кто что для себя выделил интересного?
Я думаю тут только teadrinker тебе сможет что-то подсказать.
Лично для себя я там не увидел ничего интересного, чтобы тратить время на изучение нового синтаксиса.
Весь интерес как раз и заключается в новом синтаксисе. В v2 используется объектно-ориентированный подход и соответствующий удобный синтаксис. Любые методы встроенных классов могут быть переопределены, в любой объект могут быть добавлены новые свойства, например в объект окна можно записать какую-либо сопутствующую информацию, воспользовавшись простым синтаксисом через точку.
В v2 используется объектно-ориентированный подход
http://forum.script-coding.com/viewtopic.php?id=17648
Тогда подскажи как это унифицировать? Функции там объекты? Я их могу пройти циклом в начале?
Я имею ввиду как в JS.
Функции объекты. Но вопрос не совсем понял.
Функции объекты
Как выглядит цикл перебора функций в скрипте анк?
Можно так:
#Requires AutoHotkey v2
for fn in [SubStr, MsgBox, FileAppend] {
MsgBox 'Type: ' . Type(fn) . '`nName: ' . fn.Name . '`nIsBuiltIn: ' . fn.IsBuiltIn
}
FileAppend(params*) {
}
Весь интерес как раз и заключается в новом синтаксисе. В v2 используется объектно-ориентированный подход и соответствующий удобный синтаксис.
Только зачем он нужен в автохотки, который изначально создавался для автоматизации и горячих клавиш для непрограммистов?
Всё-равно по популярности и количеству библиотек пайтона ему не переплюнуть, а порог вхождения при таком же функционале, что и в первой версии, теперь гораздо сложней.
Любой язык должен развиваться, что не развивается — то умирает. При этом развитии у разработчика возникло желание исправить несуразности с синтаксисом, видимо одно потянуло за собой другое, и он пришёл к необходимости внедрить парадигму ООП, так как большинство современных ЯП её используют.
Насколько сложнее порог вхождения, нам наверно уже судить трудно. Но новичку ведь не обязательно сразу вникать в сложные концепции, он всё ещё может написать простой код, просто посмотрев пример из справки.
Я вот сейчас изучаю Java, вот там действительно есть порог вхождения.
Развиваться можно разными путями.
Например переносить новое винапи.
Но в данном случае определенно стало сложнее.
Например возьми пример из справки по ImageSearch.
На ahk v1:
CoordMode Pixel ; Interprets the coordinates below as relative to the screen rather than the active window.
ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, *Icon3 %A_ProgramFiles%\SomeApp\SomeApp.exe
if (ErrorLevel = 2)
MsgBox Could not conduct the search.
else if (ErrorLevel = 1)
MsgBox Icon could not be found on the screen.
else
MsgBox The icon was found at %FoundX%x%FoundY%.
И на ahk v2:
CoordMode "Pixel" ; Interprets the coordinates below as relative to the screen rather than the active window.
try
{
if ImageSearch(&FoundX, &FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, "*Icon3 " A_ProgramFiles "\SomeApp\SomeApp.exe")
MsgBox "The icon was found at " FoundX "x" FoundY
else
MsgBox "Icon could not be found on the screen."
}
catch as exc
MsgBox "Could not conduct the search due to the following error:`n" exc.Message
В первом случае достаточно почитать, что такое errorlevel, а во-втором - функции, объекты, try catch.
Кстати, этого всего пытался избежать автор автохотки Chris:
https://www.autohotkey.com/board/topic/ … e-changes/
Я здесь вижу такие ключевые моменты:
Язык изначально создавался как простой инструмент для непрограммистов
Язык приобрёл некоторую популярность, появилось сообщество
Появились опытные пользователи, они захотели более продвинутых возможностей
Соответственно, язык стал усложняться, на первое место стали выходить потребности постоянных пользователей, а не новичков
Се ля ви, не новички же поддерживают разработку.
В примере, который ты привёл, можно обойтись и без обработки исключений, исключение выбрасывается только в случае некорректного параметра, например, файл не существует. В самих сообщениях исключений больше подробностей, чем в первой версии. Но документацию, конечно, надо дорабатывать.
Можно так:
#Requires AutoHotkey v2 for fn in [SubStr, MsgBox, FileAppend] { MsgBox 'Type: ' . Type(fn) . '`nName: ' . fn.Name . '`nIsBuiltIn: ' . fn.IsBuiltIn } FileAppend(params*) { }
Тут нет пресловутого глобального this, и перечисление имён как то не комильфо, и 2я версия в этом вопросе ничего не даёт.
А касательно диалога, мне низкий порог входа когда дал саму эту возможность входа. Зачем теперь АНК, если есть питон?
Честно, не уловил смысла, вообще никакого. Можешь как-то перефразировать?
глобального this
В JS такое есть, а в V2 не наблюдается. В JS в цикле ты можешь перечислить все объекты запускаемого сценария.
По второму Malcev ответил.
Всё-равно по популярности и количеству библиотек пайтона ему не переплюнуть, а порог вхождения при таком же функционале, что и в первой версии, теперь гораздо сложней.
В JS такое есть, а в V2 не наблюдается.
Всё равно не понял. Разве где-то написано, что v2 должен повторить все до одной фичи JS?
По поводу питона — ну, там, скорее всего, кроме основного синтаксиса придётся изучать ещё кучу библиотек на каждый случай, а в AHK многое можно сделать "из коробки", например GUI.
Я увидел только упрощение общения с WINAPI, по подобию библиотеки которая давно есть. Хорошо, ты что для себя в новой версии увидел интересного?
Всё равно не понял. Разве где-то написано, что v2 должен повторить все до одной фичи JS?
Это не принцип ООП? Могу ошибаться, JS как пример привёл, но разве не везде так?
разве не везде так?
Если имеешь в виду иерархию объектов, то в большинстве случаев наверно так. Но тут имеется в виду не иерархия всех объектов вообще, а иерархия классов, то есть типов объектов. В AHK v2 тоже есть корневой класс Any. Но используя эту иерархию, нельзя перечислить все экземпляры какого-либо класса, так как класс-родитель ничего не знает о созданных в коде его экземплярах. Конкретная функция — это как раз экземпляр родительского класса Func.
что для себя в новой версии увидел интересного?
Сам по себе принцип ООП интересен, с его помощью можно создавать более понятный код, который проще менять.
Сам по себе принцип ООП интересен
А что нового, кроме того что команды в функции переделали?
Я это видел.
Других нет.
Мне понравилось создание GUI в v2, особенно обработчик нажатий допустим. Еще вроде можно стрелочные функции делать, а с ними удобнее работать, когда нужно callback передать.
Но лично не ковырял v2.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться