본문 바로가기
programming language/Autohotkey

Autohotkey 어떤 버전을 설치 해야 하나…

by __observer__ 2019. 1. 10.
반응형

Autohotkey 를 사용한지는 꽤 오래 된것 같고 저는 보통 Autohotkey 를 설치할때 recommend 버전인 unicode 32 비트를 설치하곤 합니다. 그런데 최근에 Autohotkey dllcall 을 사용하여 msvcrt.dll 의 _i64toa 함수를 사용하다 보니 제가 설치한 unicode 32-bits Autohotkey 에서는 정상적으로 동작을 하지 않더군요. _i64toa 함수는 radix 를 변환하는 함수이고 보통 2 진수, 8 진수, 16 진수 등으로 변환하는데 사용하곤 합니다.

_i64toa 함수의 사용 예는 아래와 같습니다. 아래 예는 숫자 15를 16진수(Hexa) 값으로 변환하는 예인데~



decNumber := 15

radix := 16

VarSetCapacity(kk,65,0)

DllCall("msvcrt\_i64toa", "Int64", decNumber, "Str", kk, "Int", radix)

msgbox %kk%

실행을 해보면 아래와 같이 정상적으로 f 라는 값이 나오게 됩니다.

그런데 decNumber := 16 으로 하게 되면 아래와 같이 뭔지 알 수 없는 값이 나오게 되더군요.

여러가지 방법들을 시도하다 알게 된게~ Autohotkey 가 설치된 폴더(C:\Program Files\AutoHotkey)에 같이 들어있는 AutoHotkeyA32.exe 즉 ANSI 32-bit 를 사용하면 정상적으로 동작을 하더군요. decNumber := 16 인 경우에 대해 AutoHotkeyA32.exe 를 사용하여 실행해보면 아래와 같이 정상적인 Hexa 값을 얻을 수 있습니다.

Autohotkey 를 설치 할때 보면 아래와 같이 ANSI 32-bit 의 경우 legacy scripts 와의 호환성이 좋다고 나오고 따라서 기존 DLL 과 같이 좀 오래된 라이브러리를 사용하는 경우에는 ANSI 32-bit Autohotkey 를 사용하는게 적절할 듯 보입니다.

그런데 우리는 한글을 주로 사용하고 한글 정규 표현식 등을 사용한다면 unicode 버전을 사용하는게 좋으므로 제가 내린 결론은 unicode 32 비트 버전을 default 로 설치하고~ legacy scripts 를 사용할때만 선택적으로 ANSI 32-bit Autohotkey 를 사용하는게 적절할것 같습니다.



반응형

댓글