shahlik002
Мне кажется, Inputbox не очень подходит для задания горячей клавиши.
mtc_err
Написал вот такой вариант на скорую руку без возможности нормально проверить:
ini2=%A_WorkingDir%\название файла.ini
none:= ;переменная для страховки от ошибок
iniread,Screenshot,%ini2%,Название группы клавиш,Имя1 ;чтение из существующего файла
if (Screenshot="error" or Screenshot=none)
Screenshot:="sc42" ;сверка на наличие ошибок - если переменная горячей клавиши ничего не содержит или вызывает ошибку при чтении, насильно назначает её на F8
else
Screenshot:=GetHotkeySC(Screenshot) ;в остальных случаях читает её из файла
Gui, set:Add, button, x50 y30 w125 h23 center gnichego, Применить
Gui, set:Add, Text, x5 y79 w250 h15 +BackgroundTrans, Клавиша:
Gui, set:Add, Hotkey, x240 y75 w80 h20 vcisScreenshot, %Screenshot%
Gui, set:Add, button, x2 y100 w125 h23 center, Сохранить
Gui, set:Add, button, x200 y100 w120 h23 center, Закрыть настройки
Gui, set:Show, w322 h125, %AppName% » Настройки
Hotkey, % Screenshot, on, UseErrorLevel
Hotkey, % Screenshot, work, UseErrorLevel ;здесь горячая клавиша привязывается к процедуре
return
work:
Screenshot := (GUISys.isScreenshot)
SendChat("/time")
Sleep 250
SendInput {%Screenshot%}
return
nichego:
Hotkey, % Screenshot, off, UseErrorLevel ;на случай если происходит смена горячей клавиши отключает функционал текущей
GuiControlGet,Screenshot,,cisscreenshot
IniWrite,%Screenshot%,%ini2%,Название группы клавиш,Имя1
Hotkey, % Screenshot, on, UseErrorLevel
Hotkey, % Screenshot, work, UseErrorLevel
return
GetHotkeySC(hotkey) {
RegExMatch(hotkey, "([!^+#]*)(.*)", key)
Return key1 . ((StrLen(key2) = 1 || InStr(key2, "Num")) ? Format("sc{:X}", GetKeySC(key2)) : key2)
}
return