1

Тема: AHK: Оптимизация биндера

+ открыть спойлер
IniRead, Edit1, setting.ini, CommandHot, Edit1

IniRead, Key1, setting.ini, KeyHot, Key1

IniRead, text2, setting.ini, CommandHot, text2
IniRead, ping2, setting.ini, CommandHot, ping2
IniRead, text3, setting.ini, CommandHot, text3
IniRead, ping3, setting.ini, CommandHot, ping3
IniRead, text31, setting.ini, CommandHot, text31
IniRead, ping31, setting.ini, CommandHot, ping31

Hotkey, % Key1, Кнопка1, on UseErrorLevel

Gui, Add, Hotkey, x12 y19 w70 h20 vKey1, %Key1%
Gui, Add, Edit, x92 y19 w60 h20 vEdit1, %Edit1%
Gui, Add, Button, x162 y19 w80 h20 gButton1, Настройка
Gui, Add, Text, x82 y-1 w80 h20 +Center, Кол-во строк
Gui, Show, w255 h53, Binder
return

GuiClose:
ExitApp
;===============================
M1(Edit){
global
Gui, 2:Font, S10 CDefault, Verdana
Gui, 2:Font, S10 CDefault, Verdana
Gui, 2:Add, GroupBox, x2 y-1 w284 h79 , Введите текст или команду
Gui, 2:Add, Edit, x12 y19 w260 h20 vtext2, %text2%
Gui, 2:Add, Edit, x12 y49 w70 h20 vping2, %ping2%
Gui, 2:Add, Text, x92 y49 w180 h20 , Задержка
Gui, 2:Add, Button, x2 y80 w285 h25 gSave, Применить
Gui, 2:Show, w288 h110, Binder
return
}

M2(Edit){
global
Gui, 3:Font, S10 CDefault, Verdana
Gui, 3:Font, S10 CDefault, Verdana
Gui, 3:Add, GroupBox, x2 y-1 w284 h138 , Введите текст или команду
Gui, 3:Add, Edit, x12 y19 w260 h20 vtext31, %text31%
Gui, 3:Add, Edit, x12 y49 w70 h20 vping31, %ping31%
Gui, 3:Add, Text, x92 y49 w180 h20 , Задержка
Gui, 3:Add, Edit, x12 y79  w260 h20 vtext3, %text3% 
Gui, 3:Add, Edit, x12 y109 w70 h20 vping3, %ping3% 
Gui, 3:Add, Text, x92 y109 w180 h20 , Задержка
Gui, 3:Add, Button, x2 y140 w285 h25 gSave, Применить
Gui, 3:Show, w288 h170, Binder
return
}

;===============================
Button1:
{
Gui Submit, NoHide
IniWrite, %Edit1%, setting.ini, CommandHot, Edit1

IniWrite, %Key1%, setting.ini, KeyHot, Key1

Hotkey, % Key1, Кнопка1, on UseErrorLevel

M%Edit1%(Edit)
}
return

Кнопка1:
{
Send, {t} 
Sleep %ping31%
SendInput, %text31%
Send, {enter}
Sleep %ping31%
Send, {t} 
Sleep %ping3%
SendInput, %text3%
Send, {enter}
Sleep %ping3%
}
return

Save:
{
Gui Submit, NoHide
IniWrite, %text2%, setting.ini, CommandHot, text2
IniWrite, %ping2%, setting.ini, CommandHot, ping2
IniWrite, %text3%, setting.ini, CommandHot, text3
IniWrite, %ping3%, setting.ini, CommandHot, ping3
IniWrite, %text31%, setting.ini, CommandHot, text31
IniWrite, %ping31%, setting.ini, CommandHot, ping31
Gui, Destroy
}
return

;========================================

Пытаюсь сделать биндер, но не могу решить следующие ошибки:
1) Нужно сделать так, что-бы бинд не работал в самом AHK GUI!
2) Если вы, например, выбрали горячую клавишу "1", применили её (если что, изменения горячей клавиши применяются кнопкой "Настройка". Да, это глупо но мне так пока-что удобно, потом изменю) а затем вы выбрали кнопку "2", то кнопка "1" всё равно будет работать, в итоге на кнопку 1 и 2 выполняется одинаковое действие...
3) Когда выбираешь кнопку, а затем кол-во строк (Пока-что доступно 1 и 2, позже будет больше), применяешь это и всё работает. Но когда хочешь переключиться на другую строку то уже не работает, не знаю как реализовать

2

Re: AHK: Оптимизация биндера

http://forum.script-coding.com/viewtopi … 43#p127143
Примерно так, но не уверен в надёжности.


#SingleInstance Force
#NoEnv
#If MyRules()
#If
Hotkey, If, MyRules()
Gui, New, HWNDhGui

IniRead, Key, IniFile.ini, Section, MyHotkey1, % A_Space
Hotkey, % PrKey%A_DefaultGui%MyHotkey1 := Key, Action, On, UseErrorLevel
Gui, Add, Hotkey, vMyHotkey1 gSave, % Key

IniRead, Key, IniFile.ini, Section, MyHotkey2, % A_Space
Hotkey, % PrKey%A_DefaultGui%MyHotkey2 := Key, Action, On, UseErrorLevel
Gui, Add, Hotkey, vMyHotkey2 gSave, % Key


Gui, Add, Edit, wp

Gui, Show 
Return

MyRules() {
	Global 
	Return !WinActive("ahk_id" hGui)
}

Save:
    Hotkey, % PrKey%A_Gui%%A_GuiControl%, Off, UseErrorLevel
	
	GuiControlGet, Key, %A_Gui%:, %A_GuiControl%
    Hotkey, % PrKey%A_Gui%%A_GuiControl% := Key, Action, On, UseErrorLevel 
	
	IniWrite, % Key, IniFile.ini, Section, % A_GuiControl
    Return

Action: 
    MsgBox,,, % A_ThisHotkey "`n" A_ThisLabel,0.5
    Return 

GuiClose:
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

3 (изменено: serzh82saratov, 2020-04-08 02:09:46)

Re: AHK: Оптимизация биндера

Так почему то надёжнее.


#SingleInstance Force
#NoEnv
#If MyRules()
#If
Hotkey, If, MyRules()
Gui, New, HWNDhGui

IniRead, Key, IniFile.ini, Section, MyHotkey1, % A_Space
Hotkey, % PrKey%A_DefaultGui%MyHotkey1 := Key, Action, On, UseErrorLevel
Gui, Add, Hotkey, vMyHotkey1 gSave, % Key

IniRead, Key, IniFile.ini, Section, MyHotkey2, % A_Space
Hotkey, % PrKey%A_DefaultGui%MyHotkey2 := Key, Action, On, UseErrorLevel
Hotkey, If
Gui, Add, Hotkey, vMyHotkey2 gSave, % Key

Gui, Add, Edit, wp, тест

Gui, Show 
Return

MyRules() {
	Global 
	Return !WinActive("ahk_id" hGui)
}

Save:
	Hotkey, If, MyRules()
    Hotkey, % PrKey%A_Gui%%A_GuiControl%, Off, UseErrorLevel
	
	GuiControlGet, Key, %A_Gui%:, %A_GuiControl%
    Hotkey, % PrKey%A_Gui%%A_GuiControl% := Key, Action, On, UseErrorLevel 
	
	IniWrite, % Key, IniFile.ini, Section, % A_GuiControl
	Hotkey, If
    Return

Action: 
    MsgBox,,, % A_ThisHotkey "`n" A_ThisLabel,0.5
    Return 

GuiClose:
	ExitApp
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

4

Re: AHK: Оптимизация биндера

serzh82saratov, как это можно в мой код интегрировать? Я не пойму.

5

Re: AHK: Оптимизация биндера

Тогда пробуйте свой код интегрировать в мой.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

6 (изменено: Wraith, 2020-09-10 22:22:02)

Re: AHK: Оптимизация биндера

Как решить вторую проблему автора этой темы? Как удалить предыдущий бинд и сохранить новый?

vlad.blik13 пишет:

2) Если вы, например, выбрали горячую клавишу "1", применили её (если что, изменения горячей клавиши применяются кнопкой "Настройка". Да, это глупо но мне так пока-что удобно, потом изменю) а затем вы выбрали кнопку "2", то кнопка "1" всё равно будет работать, в итоге на кнопку 1 и 2 выполняется одинаковое действие...

7 (изменено: serzh82saratov, 2020-09-11 22:00:16)

Re: AHK: Оптимизация биндера


#SingleInstance Force
#NoEnv
#If MyRules()
#If
Gui, New, HWNDhGui
Hotkey, If, MyRules() 

Loop 2
{ 
	IniRead, Key, IniFile.ini, Section, MyHotkey%A_Index%, % A_Space 
	Hotkey, % MyHotkey%A_Index% := Key, Action, On, UseErrorLevel 
	Gui, Add, Hotkey, vMyHotkey%A_Index%, % Key
}   
Gui, Add, Button, wp gSave, Save

Gui, Show 
Hotkey, If
Return

MyRules() {
	Global 
	Return !WinActive("ahk_id" hGui)
}

Save: 
	Hotkey, If, MyRules()
	Loop 2
	{
		Hotkey, % MyHotkey%A_Index%, Off, UseErrorLevel
		GuiControlGet, MyHotkey%A_Index% 
		Hotkey, % MyHotkey%A_Index%, Action, On, UseErrorLevel
		IniWrite, % MyHotkey%A_Index%, IniFile.ini, Section, MyHotkey%A_Index%
	}  
	Hotkey, If
    Return

Action: 
    MsgBox,,, % A_ThisHotkey "`n" A_ThisLabel,0.5
    Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui