본문 바로가기

Autohotkey강좌

Autohotkey 38, 설정 파일 읽어 오기 및 저장하기

반응형

https://youtu.be/I3_hjLNXpQo

하나의 프로그램을 사용할 때 각자 사용하는 설정은 다른 경우가 많습니다. 따라서 개인별로 설정파일에서 설정치를 읽어서 가져오고 다시 저장하는 기능을 제공해 주는것이 훌륭한 프로그램이 되는 조건이라고 할 수 있습니다. 

오늘은 간단히 설정치 2가지를 읽어 오고, 값을 변경한 후에 다시 저장하는 것을 진행해 보겠습니다.

먼저 UI구성은 다음과 같습니다.

아주 간단한 구성입니다. 설정1은 default로 10이라는 값을 가지고 있고, 설정2는 20이라는 값을 가지고 있습니다. 

어떤 사람은 이 기본값을 선호할 수 있지만, 어떤 사람은 다른 값을 선호해서 바꾸려고 합니다. 그럴때는 원하는 값으로 변경하고 Save Setting이라는 버튼을 눌러서 저장하도록 하려고 합니다.

UI구성은 이제 쉽게 가능하시죠? 아래처럼 구성하시면 됩니다.

Gui, Add, Text, x60 y30 w50 h20 , 설정1 
Gui, Add, Edit, x120 y25 w50 h20 vSet1, 10
Gui, Add, Text, x60 y60 w50 h20 , 설정2
Gui, Add, Edit, x120 y55 w50 h20 vSet2, 20
Gui, Add, Button, x60 y120 w100 h20, Save Setting

 

여기서 Set1과 Set2라는 변수를 만들었고 기본값으로 10과 20을 넣었습니다. 이 변수들로 값을 읽어오고 저장할겁니다.

UI가 구성이 되었으므로 실제로 설정값을 어떤 파일로 저장할지를 결정해야 하는데 우리는 param.ini로 저장할겁니다.

우선 처음에 실행될 때 해당 파일이 있는지 확인을 해야겠죠? 그래서 파일이 없으면 바로 실행창을 띄우면 설정한 10, 20을 가지고 실행이 됩니다. 만약 파일이 있다면 해당 파일을 읽어야겠죠?

IfExist %A_ScriptDir%\param.ini
{
   FileRead, param, %A_ScriptDir%\param.ini

파일을 읽은 결과가 param이라는 변수에 저장이 됩니다. 이 내용을 분석하기 위해서는 StrSplit이라는 함수를 사용해서 분리하면 됩니다. 우리는 저장할때도 각각의 내용을 순차적으로 저장할 것입니다. 저장형태는 아래처럼 저장할 것입니다.

Set1:10
Set2:20

형태를 알고 있으니, 분리하는 방법도 쉽습니다. 우선 구분자는 :과 enter가 됩니다. :은 쉽게 표시가능한데, enter는 어떻게 해야 할까요? `n으로 하면 됩니다. 그런데 2개를 모두 구분자로 하려면 어떻게 할까요? 아래처럼 하면 됩니다.

par :=StrSplit(param,[":","`r`n"])

그 결과 par에는 각각 Set1 10 Set2 20 가 각각 저장이 될것입니다. 순차적으로 있는 내용중에서 우리가 사용할 데이터는 10과 20이므로 2번째 4번째값만 읽어 오면 됩니다. 읽은 값을 Set1과 Set2변수에 반영하기 위해서는 일반변수가 아닌 GUI객체이므로 GuiControl을 사용하면 됩니다.

T1 := par[2]
T2 := par[4]
Guicontrol,, Set1, %T1%
Guicontrol,, Set2, %T2%

값을 모두 가져 왔으므로 Gui, Show ....를 해주면 프로그램이 실행됩니다.

다음으로 사용자가 변경한 값을 저장하는 SaveSetting버튼에 대한 구성은 어떻게 해야 할까요?

우선 사용자가 변경한 값을 읽어와야 하므로 아래 문장을 실행하면 됩니다.

Gui, Submit, nohide

해당값을 읽어 왔으므로 해당 값을 저장해야 하는데, autohotkey에서는 FileAppend로 기록합니다.

따라서 기존에 파일이 있을 경우 계속 뒤에 붙이게 되므로 기존 파일을 지워야 합니다.

그래서 파일이 존재하는지 확인해서 먼저 지워 줍니다.

IfExist %A_ScriptDir%\param.ini
   FileDelete, %A_ScriptDir%\param.ini

이제 값을 저장하면 되는데 형태는 Set1:변경값의 형태로 하려면 임시로 string을 구성해야겠죠.

구성된 string을 파일에 써주면 됩니다.

T1 := "Set1:" + Set1
T2 := "Set2:" + Set2 
FileAppend, %T1%`n, %A_ScriptDir%\param.ini
FileAppend, %T2%, %A_ScriptDir%\param.ini

여기서는 저장할 변수가 2가지만 있으므로 간단하게 이렇게 저장을 한것이고 복잡한 경우에는 로직을 좀 고민하셔야겠죠?

전체 프로그램은 아래 파일에서 확인하시기 바랍니다.

FileSetting.ahk
0.00MB

이번 예제는 다른 분들이 사용할만한 실행파일이 아니라서 올리지 않겠습니다.

반응형