1

Тема: AHK: Задание нескольких переменных хоткеев

Взял вот здесь код, который переводит введенные символы в VK коды. Всё отлично работает, но есть желание сделать такое же для нескольких хоткеев.

#NoEnv
#SingleInstance Force
Global PathIni := A_ScriptDir "\config.ini"

Gui, +AlwaysOnTop +ToolWindow
IniRead, Hotkey, % PathIni, Gamma, gam1, % A_Space

Gui, Add, Hotkey, vgam1, % Hotkey 
Gui, Add, text, Center vText wp
Gui, Add, Button, Default, Save
Gui, Show
Return

ButtonSave:
	GuiControlGet, gam1
	Hotkey := FormatHotkey(gam1)
	IniWrite, % Hotkey, % PathIni, Gamma, gam1
    GuiControl, , Text, % Hotkey
Gui, Destroy

FormatHotkey(Hotkey) {
	RegExMatch(Hotkey, "S)^([\^\+!]*)(.*?)$", K)
	If (StrLen(K2) = 1 && !Instr("1234567890-=", K2))
		Return K1 . Format("vk{:X}", GetKeyVK(K2))
	Return Hotkey
}

2

Re: AHK: Задание нескольких переменных хоткеев

#NoEnv
#SingleInstance Force
Global PathIni := A_ScriptDir "\Hotkey.ini"

Gui, +AlwaysOnTop 
Loop 4 {
	IniRead, Hotkey, % PathIni, Section, MyHotkey%A_Index%, % A_Space
	Gui, Add, Hotkey, vMyHotkey%A_Index% gWriteIni, % Hotkey
} 
Gui, Show 
Return

GuiClose() { 
    ExitApp
} 

WriteIni() { 
	GuiControlGet, MyHotkey, %A_Gui%:, %A_GuiControl% 
	Hotkey := FormatHotkey(MyHotkey) 
	IniWrite, % Hotkey, % PathIni, Section, % A_GuiControl
}

FormatHotkey(Hotkey) {
	RegExMatch(Hotkey, "S)^([\^\+!]*)(.*?)$", K)
	If (StrLen(K2) = 1 && !Instr("1234567890-=", K2))
		Return K1 . Format("vk{:X}", GetKeyVK(K2))
	Return Hotkey
}  
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Задание нескольких переменных хоткеев

Если вы хотите сохранять по кнопке, то в том же посте есть пример.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: Sgy-x2, 2016-06-01 20:41:47)

Re: AHK: Задание нескольких переменных хоткеев

serzh82saratov
Спасибо. Я что-то тот пример проигнорировал.

5 (изменено: Sgy-x2, 2016-06-01 21:48:59)

Re: AHK: Задание нескольких переменных хоткеев

serzh82saratov
Подскажи пожалуйста. Всё вроде бы получатся, но есть один затык. Когда комбинирую в общий код появляется конфликт с таймером. Вот пример, таймер полностью работать не будет, некоторые параметры берутся из файла, но ошибку увидеть можно.

#NoEnv
#SingleInstance Force
Global PathIni := A_ScriptDir "\config.ini"

Gui, +AlwaysOnTop 
Loop 3
{
	IniRead, Hotkey, % PathIni, Key, key%A_Index%, % A_Space
	Gui, Add, Hotkey, vkey%A_Index%, % Hotkey
}
Gui, Add, Button, gWriteIni wp, Save
Gui, Show 
Return

WriteIni() {
	Loop 3
	{
		GuiControlGet, key, , key%A_Index%
		Hotkey := FormatHotkey(key)
		IniWrite, % Hotkey, % PathIni, Key, key%A_Index%
		Hotkeys .= Hotkey "`n"
	}
	TrayTip, Hotkey's, %Hotkeys%
}

FormatHotkey(Hotkey) {
	RegExMatch(Hotkey, "S)^([\^\+!]*)(.*?)$", K)
	If (StrLen(K2) = 1 && !Instr("1234567890-=", K2))
		Return K1 . Format("vk{:X}", GetKeyVK(K2))
	Return Hotkey
} 
return

!f3::
if !n
Loop
{
	Start := A_TickCount
	Timer:
		GuiControl, 5:, Static1, % Format(Rest := tm - ((A_TickCount - Start)// 1000))
		SetTimer, % Rest <= 0 ? "Hide" : "Timer", % "-" (999 - A_MSec) + 100
		Return
	Hide:
		Gui 5:Destroy
		SoundBeep, 500, 500
		Return
	Format(NumberOfSeconds)
	{
    time = 19990101
    time += %NumberOfSeconds%, seconds
    FormatTime, mmss, %time%, mm:ss
    return NumberOfSeconds//3600 ":" mmss
	}
}
Else
Return

6

Re: AHK: Задание нескольких переменных хоткеев

Он у меня ошибку выдаёт, и это слишком длинный код, на форуме следует приводить минимально короткий код, только демонстрирующий проблему.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Задание нескольких переменных хоткеев

serzh82saratov пишет:

Он у меня ошибку выдаёт, и это слишком длинный код, на форуме следует приводить минимально короткий код, только демонстрирующий проблему.

Всё правильно я пытался продемонстрировать ошибку. По отдельности 2 скрипта работают, вместе нет. Сократил код.

8

Re: AHK: Задание нескольких переменных хоткеев

Format(NumberOfSeconds)

Название не должно совпадать со встроенной функцией.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Задание нескольких переменных хоткеев

serzh82saratov
Еще вопрос. Как сделать чтоб можно было задавать в хоткее кнопки мыши?

10

Re: AHK: Задание нескольких переменных хоткеев

Никак, контрол это не поддерживает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui