Code: Select all
#NoEnv
#SingleInstance, Force
; CONSTANT vars
IniFile := A_ScriptDir "\config.ini"
List_1 := {None: "", Ctrl: "^", Shift: "+", Alt: "!"}
Labels := {One: 1, Two: 2, Three: 3, Four: 4
, Five: 5, Six: 6, Seven: 7, Eight: 8}
; retrieve previous GUI content
IniRead, prev_Modifier, %IniFile%, GUI, Modifier, 1
IniRead, prev_Number, %IniFile%, GUI, Number, 1
IniRead, prev_Letter, %IniFile%, GUI, Letter, 1
IniRead, prev_Label, %IniFile%, GUI, Label, 1
; convert to numbers, needed for choosing myDDL
myModifier := {None: 1, Ctrl: 2, Shift: 3, Alt: 4} [prev_Modifier]
myNumber := prev_Number + 1
myLetter := Asc(SubStr(prev_Letter, 2)) - 96
myLabel := Labels[prev_Label]
; DDLs
Modifiers := "None|Ctrl|Shift|Alt"
Numbers := "0|1|2|3|4|5|6|7"
Letters := "Aa|Bb|Cc|Dd|Ee|Ff|Gg|Hh"
Labels := "One|Two|Three|Four|Five|Six|Seven|Eight"
; GUI
Gui, Add, DropDownList, xm w50 vDDL1 Choose%myModifier%, %Modifiers%
Gui, Add, DropDownList, x+0 w50 vDDL2 Choose%myNumber%, %Numbers%
Gui, Add, DropDownList, x+0 w50 vDDL3 Choose%myLetter%, %Letters%
Gui, Add, DropDownList, x+0 w50 vDDL4 Choose%myLabel%, %Labels%
Gui, Add, Button, xm w200, Submit this hotkey
Gui, Show
Return ; end of auto-execute section
;-------------------------------------------------------------------------------
GuiClose:
;-------------------------------------------------------------------------------
Gui, Submit
; store current choices for DDLs
IniWrite, %DDL1%, %IniFile%, GUI, Modifier
IniWrite, %DDL2%, %IniFile%, GUI, Number
IniWrite, %DDL3%, %IniFile%, GUI, Letter
IniWrite, %DDL4%, %IniFile%, GUI, Label
ExitApp
;-------------------------------------------------------------------------------
ButtonSubmitThisHotkey:
;-------------------------------------------------------------------------------
Gui, Submit, NoHide
KeyName := List_1[DDL1] DDL2 ;" & " SubStr(DDL3, 2)
Hotkey, %KeyName%, %DDL4%
IniWrite, %DDL4%, %IniFile%, Hotkeys, %KeyName%
Return
One:
Run, WinRAR.exe, C:\Program Files\WinRAR\
Return
Two:
Three:
Four:
Five:
Six:
Seven:
Eight:
MsgBox, %A_ThisLabel%
Return
Maybe you can use it anyway.