Не сохраняются изменения горячих клавиш Topic is solved

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

Не сохраняются изменения горячих клавиш

10 Nov 2023, 14:21

Здравствуйте. Есть скрипт Autohotkey:

Code: Select all

#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%

; Читаем настройки
GoSub ReadSettingsFromIni

		GoSub ShowSettingsWindow
		Return


; ===========================
; Конец секции автовыполнения



; Чтение настроек из .ini-файла в переменные
; ==========================================
ReadSettingsFromIni:
{
	IniRead, HotKey_KeyAllFiles , %A_ScriptDir%\Настройки.ini, Program1, KeyAllFiles , ^A
	IniRead, Ed_CordListx , %A_ScriptDir%\Настройки.ini, Program1, CordListx , 170
	IniRead, Ed_CordListy , %A_ScriptDir%\Настройки.ini, Program1, CordListy , 90
	IniRead, HotKey_KeyRefresh , %A_ScriptDir%\Настройки.ini, Program1, KeyRefresh , F5
	IniRead, Ed_CordRefx , %A_ScriptDir%\Настройки.ini, Program1, CordRefx , 1135
	IniRead, Ed_CordRefy , %A_ScriptDir%\Настройки.ini, Program1, CordRefy , 95

	Return
}


; Действия по созданию горячих клавиш
; ===================================
DisableCustomHotkeys:
{
	; Прячем ошибки в случае, если была задана некорректная клавиша.
	Try {
		HotKey, %HotKey_KeyRefresh% , Off
		HotKey, %HotKey_KeyAllFiles% , Off
	}
	Return
}

EnableCustomHotkeys:
{
	Try {
		HotKey, %HotKey_KeyRefresh% , OnKey_Refresh , On
		HotKey, %HotKey_KeyAllFiles% , OnKey_AllFiles , On			

	} Catch err {
		GoSub DisableCustomHotkeys
		errorMessage := err.Message
		MsgBox, 48, %ProgramName%, Не удалось создать горячие клавиши!`nСовет: воспользуйтесь документацией по ссылке "Правописание"`n`n%errorMessage%, 5
	}
	
	Return
}

; Создание окна настроек
; ======================
ShowSettingsWindow:
{
Gui, GuiMain: New
Gui, GuiMain: Add, Tab2, xm ym W330 h120 vTabvar gTabSub, Program1|

Gui, GuiMain: Tab, Program1
	Gui, GuiMain: Add, Text, XM+30 Yp+25 W100 R1 , Все заказы
	Gui, GuiMain: Add, Edit, X+10 Yp W160 R1 vHotKey_AllFiles , %HotKey_KeyAllFiles%
	Gui, GuiMain: Add, Text, XM+30 Y+m W170 R1 , Шаг 1. Список Отображено
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordListx , %Ed_CordListx%
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordListy , %Ed_CordListy%
	Gui, GuiMain: Add, Text, XM+30 Yp+25 W100 R1 , Обновление
	Gui, GuiMain: Add, Edit, X+10 Yp W160 R1 vHotKey_Refresh , %HotKey_KeyRefresh%
	Gui, GuiMain: Add, Text, XM+30 Y+m W170 R1 , Шаг 1. Кнопка Обновить
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordRefx , %Ed_CordRefx%
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordRefy , %Ed_CordRefy%

Gui, GuiMain: Tab,


Gui, GuiMain: Add, Link, Xm+340 YM W225 R3, Перед началом работы назначьте горячие клавиши (см. <a href="%A_WorkingDir%/HotkeyNames.exe">правописание</a>) и измените координаты кнопок (см. <a href="%A_WorkingDir%/CordButtons.exe">координаты</a>).
Gui, GuiMain: Add, Button, XM+340   Y+M W225 R3 vBt_Save  gOnButtonSave , Сохранить настройки
Gui, GuiMain: Add, Button, XM+340   Y+M W110 R1 vBt_MExit gOnButtonExitMain, Отмена
; Gui, GuiMain: Add, Button, X+5 YP  W110 R1 vBt_Clear gOnButtonClear, Сброс

Gui, GuiMain: Show, xCenter y230 W590 h300

return
}

TabSub:
Gui, GuiMain: Submit, NoHide
Switch Tabvar
{
Case "Program1":Guicontrol, Move, Tabvar, W330 H300
Gui, Show, W590 H330
}
Return

; Кнопка сохранения настроек
OnButtonSave:
{
	GoSub DisableCustomHotkeys ; Отключаем старые горячие клавиши
	Gui, Submit, NoHide
	GoSub EnableCustomHotkeys ; Включаем новые горячие клавиши
	
	IniWrite, %HotKey_KeyAllFiles% , %A_ScriptDir%\Настройки.ini, Program1, KeyAllFiles
	IniWrite, %Ed_CordListx% , %A_ScriptDir%\Настройки.ini, Program1, CordListx
	IniWrite, %Ed_CordListy% , %A_ScriptDir%\Настройки.ini, Program1, CordListy
	IniWrite, %HotKey_KeyRefresh% , %A_ScriptDir%\Настройки.ini, Program1, KeyRefresh
	IniWrite, %Ed_CordRefx% , %A_ScriptDir%\Настройки.ini, Program1, CordRefx
	IniWrite, %Ed_CordRefy% , %A_ScriptDir%\Настройки.ini, Program1, CordRefy
	FileSetAttrib, +H, %A_ScriptDir%\..\.AppLauncer.ini

	Sleep 100
	Msgbox, , %ProgramName%, Настройки успешно сохранены!, 3
	Return
}

; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.

GuiMainGuiClose:
OnButtonExitMain:
	Gui, guiMain: Hide


OnKey_Refresh:
{
	Click, %Ed_CordRefx%, %Ed_CordRefy%
	Return
}

OnKey_AllFiles:
{
	Click, %Ed_CordListx%, %Ed_CordListy%
	Send {PgDn}
	Send {Enter}
	Return
}
Проблема: изменения горячих клавиш (KeyAllFiles и KeyRefresh) в нем не сохраняются в Настройки.ini. Как это исправить? Другие клавиши меняются в настройках и корректно сохраняются, а у этих остается значение, заданное по умолчанию.
garry
Posts: 3787
Joined: 22 Dec 2013, 12:50

Re: Не сохраняются изменения горячих клавиш  Topic is solved

10 Nov 2023, 15:10

error on
vHotkey_Keyallfiles
vHotkey_keyrefresh

Code: Select all

#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
; Читаем настройки
rssini:=A_ScriptDir . "\Настройки.ini"
ifnotexist,%rssini%
{
	IniWrite, `^a , %rssini%, Program1, KeyAllFiles
	IniWrite, 170       , %rssini%, Program1, CordListx
	IniWrite,  90      , %rssini%, Program1, CordListy
	IniWrite, F5  , %rssini%, Program1, KeyRefresh
	IniWrite, 1135        , %rssini%, Program1, CordRefx
	IniWrite, 95        , %rssini%, Program1, CordRefy
}
GoSub ReadSettingsFromIni
GoSub ShowSettingsWindow
return
;---------------------	

; ===========================
; Конец секции автовыполнения
; Чтение настроек из .ini-файла в переменные
; ==========================================
ReadSettingsFromIni:
	IniRead, HotKey_KeyAllFiles , %rssini%, Program1, KeyAllFiles 
	IniRead, Ed_CordListx       , %rssini%, Program1, CordListx 
	IniRead, Ed_CordListy       , %rssini%, Program1, CordListy
	IniRead, HotKey_KeyRefresh  , %rssini%, Program1, KeyRefresh
	IniRead, Ed_CordRefx        , %rssini%, Program1, CordRefx 
	IniRead, Ed_CordRefy        , %rssini%, Program1, CordRefy
	Return
; Действия по созданию горячих клавиш
; ===================================
DisableCustomHotkeys:
	; Прячем ошибки в случае, если была задана некорректная клавиша.
	Try {
		HotKey, %HotKey_KeyRefresh% , Off
		HotKey, %HotKey_KeyAllFiles% , Off
	}
	Return
;---------------------	
	
EnableCustomHotkeys:
	Try {
		HotKey, %HotKey_KeyRefresh% , OnKey_Refresh , On
		HotKey, %HotKey_KeyAllFiles% , OnKey_AllFiles , On			
	} Catch err {
		GoSub DisableCustomHotkeys
		errorMessage := err.Message
		MsgBox, 48, %ProgramName%, Не удалось создать горячие клавиши!`nСовет: воспользуйтесь документацией по ссылке "Правописание"`n`n%errorMessage%, 5
	}
	
	Return
;---------------------	

; Создание окна настроек
; ======================
ShowSettingsWindow:
Gui, GuiMain: New
Gui, GuiMain: Add, Tab2, xm ym W330 h120 vTabvar gTabSub, Program1|
Gui, GuiMain: Tab, Program1
	Gui, GuiMain: Add, Text, XM+30 Yp+25 W100 R1 , Все заказы
	Gui, GuiMain: Add, Edit, X+10 Yp W160 R1 vHotKey_KeyAllFiles , %HotKey_KeyAllFiles%
	Gui, GuiMain: Add, Text, XM+30 Y+m W170 R1 , Шаг 1. Список Отображено
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordListx , %Ed_CordListx%
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordListy , %Ed_CordListy%
	Gui, GuiMain: Add, Text, XM+30 Yp+25 W100 R1 , Обновление
	Gui, GuiMain: Add, Edit, X+10 Yp W160 R1 vHotKey_KeyRefresh , %HotKey_KeyRefresh%
	Gui, GuiMain: Add, Text, XM+30 Y+m W170 R1 , Шаг 1. Кнопка Обновить
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordRefx , %Ed_CordRefx%
	Gui, GuiMain: Add, Edit, X+10 Yp W40 R1 vEd_CordRefy , %Ed_CordRefy%
Gui, GuiMain: Tab,
Gui, GuiMain: Add, Link, Xm+340 YM W225 R3, Перед началом работы назначьте горячие клавиши (см. <a href="%A_WorkingDir%/HotkeyNames.exe">правописание</a>) и измените координаты кнопок (см. <a href="%A_WorkingDir%/CordButtons.exe">координаты</a>).
Gui, GuiMain: Add, Button, XM+340   Y+M W225 R3 vBt_Save  gOnButtonSave , Сохранить настройки
Gui, GuiMain: Add, Button, XM+340   Y+M W110 R1 vBt_MExit gOnButtonExitMain, Отмена
; Gui, GuiMain: Add, Button, X+5 YP  W110 R1 vBt_Clear gOnButtonClear, Сброс
Gui, GuiMain: Show, xCenter y230 W590 h300
return
;---------------------	

TabSub:
Gui, GuiMain: Submit, NoHide
Switch Tabvar
{
Case "Program1":Guicontrol, Move, Tabvar, W330 H300
Gui, Show, W590 H330
}
Return
;---------------------	

; Кнопка сохранения настроек
OnButtonSave:
	GoSub DisableCustomHotkeys ; Отключаем старые горячие клавиши
	Gui, Submit, NoHide
	GoSub EnableCustomHotkeys ; Включаем новые горячие клавиши
	
	IniWrite, %HotKey_KeyAllFiles% , %rssini%, Program1, KeyAllFiles
	IniWrite, %Ed_CordListx%       , %rssini%, Program1, CordListx
	IniWrite, %Ed_CordListy%       , %rssini%, Program1, CordListy
	IniWrite, %HotKey_KeyRefresh%  , %rssini%, Program1, KeyRefresh
	IniWrite, %Ed_CordRefx%        , %rssini%, Program1, CordRefx
	IniWrite, %Ed_CordRefy%        , %rssini%, Program1, CordRefy
	;FileSetAttrib, +H, %A_ScriptDir%\..\.AppLauncer.ini
	Sleep 100
	Msgbox, , %ProgramName%, Настройки успешно сохранены!, 3
	Return
;--------------------	
; При нажатии Esc, закрытии окна или нажатии кнопки Exit скрипт завершается.
GuiMainGuiClose:
OnButtonExitMain:
gosub,onbuttonsave
exitapp

/*
GuiMainGuiClose:
OnButtonExitMain:
Gui, guiMain: Hide
return
*/

;---------------------	
OnKey_Refresh:
{
	Click, %Ed_CordRefx%, %Ed_CordRefy%
	Return
}
;---------------------	
OnKey_AllFiles:
{
	Click, %Ed_CordListx%, %Ed_CordListy%
	Send {PgDn}
	Send {Enter}
	Return
}
;=====================

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 11 guests