Форма для добавления автозамен и горячих клавиш

Помощь в написании скриптов
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Форма для добавления автозамен и горячих клавиш

18 Apr 2023, 16:08

Здравствуйте. Нужна форма для добавления, изменения и удаления комбинаций клавиш в скрипте Autohotkey. Например, есть скрипт "Автозамена.ahk". В него постепенно добавляются коды для автозамены. Например:

Code: Select all

:*:btw::by the way
Нужна форма для его редактирования. Например, добавления новой строки (новой комбинации для автозамены):

Code: Select all

:*:btw::by the way
:*:exp::example
Или для редактирования существующих автозамен. Например:

Code: Select all

:*:exp::example
заменить на

Code: Select all

:*:exp::exponent
А также для удаления существующих автозамен.
Также в форму должны добавляться горячие клавиши для выполнения различных действий. Например

Code: Select all

Esc::
MouseMove, 150, 129
Click 158, 159
Sleep 1000
Click 617, 207
Return
или

Code: Select all

LWin::
Send, #{PrintScreen}
Все это должно сохраняться при следующем перезапуске скрипта.
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Форма для добавления автозамен и горячих клавиш

18 Apr 2023, 21:36

marusa122 wrote: Здравствуйте. Нужна форма [Gui] для добавления, изменения и удаления комбинаций клавиш [HotString] в скрипте Autohotkey... Также в форму должны добавляться горячие клавиши [Hotkey] для выполнения различных действий...
Кажется, такая форма уже существует — называется Блокнот.
marusa122
Posts: 135
Joined: 22 Mar 2023, 07:48

Re: Форма для добавления автозамен и горячих клавиш

19 Apr 2023, 02:34

Я знаю про Блокнот)) Только автозаменами будут пользоваться люди, которые не умеют писать скрипты в Autohotkey. Поэтому нужна форма для их добавления и сохранения.
Пыталась сделать сама, но все, что получилось - это приблизительный внешний вид главного окна. Кнопки не работают и форма не закрывается (нужно нажимать ПКМ на значок скрипта в трее и выбирать Exit, чтобы выйти оттуда)

Code: Select all

#SingleInstance force

Gui, Add, ListView, x20 y20 w400 h200, Комбинация|Результат
Gui, Add, Text, x20 y250 w400 h30, Нажмите Esc для выхода из программы.
Gui, Add, Button, x20 y300 w80 h30, Добавить
Gui, Add, Button, x120 y300 w80 h30, Редактировать
Gui, Add, Button, x220 y300 w80 h30, Удалить
Gui, Add, Button, x320 y300 w80 h30, Сохранить
Gui, Show, x100 y100 h370 w450, Горячие клавиши и автозамены

global Exit:=False

^Esc::
ExitApp
return

; Функция добавления новой записи в таблицу
AddButton:
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали кнопку Добавить
    Gui, Show
    Sleep, 2000
    Gui, Destroy
return

; Функция редактирования выбранной записи в таблице
EditButton:
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали кнопку Редактировать
    Gui, Show
    Sleep, 2000
    Gui, Destroy
return

; Функция удаления выбранной записи из таблицы
DeleteButton:
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали кнопку Удалить
    Gui, Show
    Sleep, 2000
    Gui, Destroy
return

; Функция сохранения изменений в таблице
SaveButton:
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали кнопку Сохранить
    Gui, Show
    Sleep, 2000
    Gui, Destroy
return

$F1::
$F2::
$F3::
$F4::
$F5::
$F6::
$F7::
$F8::
$F9::
$F10::
$F11::
$F12::
    KeyWait, %A_ThisHotkey%, T0.5
    if (ErrorLevel) ;if the key was not released within the 0.5 sec
        return
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали %A_ThisHotkey%
    Gui, Show
    Sleep, 2000
    Gui, Destroy
return

; Обработчик нажатия на кнопки
GuiClose:
    Gosub, %A_GuiEvent%
return
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Форма для добавления автозамен и горячих клавиш

19 Apr 2023, 09:37

marusa122 wrote: Пыталась сделать сама...

Code: Select all

; ListView - мощный контрол, но с ним тяжеловато будет работать.
Gui, Add, ListView, x20 y20 w400 h200, Комбинация|Результат

; Есть контрол Hotkey специально для горячих клавиш:
; https://www.autohotkey.com/docs/v1/lib/GuiControls.htm#Hotkey

; Добавьте кнопкам g-label, чтобы их нажатия вызывали нужный код.
Gui, Add, Button, x20 y300 w80 h30  gAddButton , Добавить

; Это зачем?
global Exit:=False
Return

; Gui по умолчанию реагирует на Escape, если есть нужная метка:
GuiEscape:
ExitApp
return

AddButton:
    Gui, Add, Text, x20 y280 w400 h20, Вы нажали кнопку Добавить
    Gui, Show     ; Это зачем? Окошко и так видно
    Sleep, 2000
    ; Если окошко сломать, его со всеми кнопками придётся делать заново.
    ; Может, лучше просто прятать (Gui, Hide)?
    Gui, Destroy
return

; Вы все-все кнопки так планируете переписать? :3
$F1::
$F2::
$F3::
    ; Не сработает: KeyWait нужно название самой кнопки (F12),
    ; а в A_ThisHotkey будет вся горячая клавиша с модификаторами ($F12).
    ; Кстати, зачем у них $-модификатор?
    KeyWait, %A_ThisHotkey%, T0.5
    if (ErrorLevel)
        return
    ; ...


GuiClose:
    Gosub, %A_GuiEvent%   ; И какой здесь план?
    Return
Правда, очень не хочется, чтобы Вы опускали руки, но пока задачу Вы себе выбрали явно не по зубам.

Мой совет: сделайте для начала без ListView, просто пять-по-два полей для автозамен. Вам там хватит подводных камней (что, если пользователь оставит какое-то поле пустым?) Когда отладите их работу полностью (с записью в другой скрипт и его перезапуск) — добавьте ещё пять полей, для хоткеев. И уже потом приступайте к экспериментам с ListView.

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 4 guests