1

Тема: AHK: Два хоткея в одной переменной

Добрый день. Проблема в следующем. Есть окно Gui в котором сохраняются хоткеи в переменные. В общем если задать поочередно два хоткея и сохранить, то получим две горячих кнопки, которые не плохо себе работают. Как этого избежать и сделать заменяемый хоткей?

Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vhot1,
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

ButtonSave:
	Gui, Submit
	Hotkey, % hot1, hotV1
Return

hotV1:
	MsgBox, Тест
Return

2

Re: AHK: Два хоткея в одной переменной

Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vhot1,
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

ButtonSave:
	Gui, Submit
	
	IfNotEqual,Lasthot1,,	Hotkey, % Lasthot1, off
	Lasthot1 := hot1
	
	Hotkey, % hot1, hotV1
Return

hotV1:
	MsgBox, Тест
Return

3

Re: AHK: Два хоткея в одной переменной

yalanne
Спасибо. Всё бы ни чего, но после нажатия кнопки сохранить, происходит сохранение (с записью в файл) больше одной переменной. Такой вариант не подходит, он попросту выключает не измененные хоткеи.

Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vhot1,
Gui, Add, Hotkey, vhot2,
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

ButtonSave:
	Gui, Submit
	
	IfNotEqual,Lasthot1,,	Hotkey, % Lasthot1, off
	Lasthot1 := hot1
	IfNotEqual,Lasthot2,,	Hotkey, % Lasthot2, off
	Lasthot2 := hot2
	
	Hotkey, % hot1, hotV1
	Hotkey, % hot2, hotV2
Return

hotV1:
	MsgBox, Тест 1
Return
hotV2:
	MsgBox, Тест 2
Return

Пробовал так, тоже всё криво, если повторно задать хоткей, или использовать модификатор.

	hot1 = F2 ;прочитано из файла
	hot2 = F3 ;прочитано из файла
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vhot1 ghotG1, % hot1
Gui, Add, Hotkey, vhot2 ghotG2, % hot2
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

hotG1:
	IfNotEqual,Lasthot1,,	Hotkey, % Lasthot1, off
	Lasthot1 := hot1
Return
hotG2:
	IfNotEqual,Lasthot2,,	Hotkey, % Lasthot2, off
	Lasthot2 := hot2
Return

ButtonSave:
	Gui, Submit
	; hot1 записывается в файл
	; hot2 записывается в файл
	Hotkey, % hot1, hotV1
	Hotkey, % hot2, hotV2
Return

hotV1:
	MsgBox, Тест 1
Return
hotV2:
	MsgBox, Тест 2
Return

4

Re: AHK: Два хоткея в одной переменной

выключает не измененные хоткеи.

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

5

Re: AHK: Два хоткея в одной переменной

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

6

Re: AHK: Два хоткея в одной переменной

Не знаю, у меня назначаются те что были до этого выключены.

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

7

Re: AHK: Два хоткея в одной переменной

Да, точно, ошибся.

8

Re: AHK: Два хоткея в одной переменной

А подскажите пожалуйста. Как избавится от ошибки не существующей переменной? Когда сохраняешь пустой хоткей.

9

Re: AHK: Два хоткея в одной переменной

Даже в русской справке написано про параметр UseErrorLevel. Следующий вопрос конечно про то, как бы не назначить такое же как уже есть, но и это есть на форуме, поищите получше. Ответ про другие клавиши тоже есть в виде костыля.

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

10 (изменено: Sgy-x2, 2016-06-06 01:30:47)

Re: AHK: Два хоткея в одной переменной

Зря вы иронизируете, я прочитал справку про UseErrorLevel, но как применить в контексте не понимаю. Про следующие вопросы, как ни странно я уже спрашивал.

	Hkey1 = 1
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vgam1,
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

ButtonSave:
	Gui, Submit
	
	IfNotEqual, Lastgam1,, Hotkey, % Lastgam1, off
	Lastgam1 := gam1
	
	Hotkey, % gam1, gamV1, on UseErrorLevel
	
	if Hkey1 = 0
	Hotkey, % gam1, Off UseErrorLevel
	if Hkey1 = 1
	Hotkey, % gam1, On UseErrorLevel
Return

gamV1:
	MsgBox, Тест 1
Return

11

Re: AHK: Два хоткея в одной переменной

Получилось вот так. Поправьте мня, если не так.

	Hkey1 = 1
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, Hotkey start
Gui, Add, Hotkey, vgam1,
Gui, Add, Button, Default, Save

F1:: Gui, Show, % (c := !c) ? "" : "Hide"
Return

ButtonSave:
	Gui, Submit
	
	IfNotEqual, Lastgam1,, Hotkey, % Lastgam1, off
	Lastgam1 := gam1
	
	if Hkey1 = 0
	Hotkey, % gam1, Off
	if Hkey1 = 1
	Hotkey, % gam1, gamV1, on UseErrorLevel

Return

gamV1:
	MsgBox, Тест 1
Return