1 (изменено: mtc_err, 2018-03-03 13:09:23)

Тема: AHK: Сочетание клавиш через config.ini

Приветствую. Такой вопрос: как сделать изменения клавиш через config.ini?

Например: чтобы в поля ввода <<Hotkey>> (назначение клавиш) - сохраняло в config.ini, и соответственно содействовало назначенное в скрипте.


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 gsaveSetting, Сохранить
Gui, set:Add, button, x200 y100 w120 h23 center gsetGuiClose, Закрыть настройки
Gui, set:Show, Hide w322 h125, %AppName% » Настройки

(sc42):: ; Тут нужно изменять клавишу через config.ini
Screenshot := (GUISys.isScreenshot)
SendChat("/time")
Sleep 250
SendInput {%Screenshot%}
return

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

2

Re: AHK: Сочетание клавиш через config.ini

Сохраняет настрйки команда IniWrite: IniWrite, Value, Filename, Section, Key.

Считывает настройки команда IniRead: IniRead, OutputVar, Filename, Section, Key [, Default].

Включает/выключает горячие клавиши команда Hotkey: Hotkey, KeyName [, Label, Options].

Чтобы введённую горячую клавишу сохранить в переменную vcisScreenshot, используйте команду GUI, Submit.

3

Re: AHK: Сочетание клавиш через config.ini

ypppu напишите пожалуйста пример. Не совсем понял.

4

Re: AHK: Сочетание клавиш через config.ini

IniRead ,key,hotkey.ini,1,key,Space
if (key=f1 or key=)
	key=space
MsgBox % key
Hotkey,%key%,label
return
Label:
indx++
ToolTip % indx
return

f1::
InputBox,key2
if key=f2
{
	MsgBox nea
	return
}
IniWrite,%key2%,hotkey.ini,1,key
Reload

Esc::
IniWrite,%key2%,hotkey.ini,1,key
ExitApp

5

Re: AHK: Сочетание клавиш через config.ini

shahlik002 спасибо)

6

Re: AHK: Сочетание клавиш через config.ini

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

7

Re: AHK: Сочетание клавиш через config.ini

Oomniq
Согласен, не всерьез, но пример то зачитан.