본문 바로가기
programming language/Autohotkey

Autohotkey_L 인코딩… 아직 적응 안됨

by __observer__ 2012. 5. 13.
반응형

이전 포스팅에서 말씀 드린 데로 저는 Autohotkey 가 없으면 윈도우를 제대로 사용하지 못 할 정도로 Autohotkey 를 좋아합니다.

 

컴퓨터에 대한 배경 지식이 별로 없어서 dllcall() 등에 대해서는 아직까지도 이해가 안 되는 내용들이 많지만~ 그래도 꾸준히 관심을 가지고 있는데요

 

최근에 Autohotkey basic 에서 Autohotkey_L 로 넘어 오게 되었습니다.

 

Autohotkey basic 에 비해 Autohotkey_L 에서는 객체 지향적인 부분에서 특히 두드러진 특징이 있는 것 같더군요.

 

배열이나 COM object 등도 지원을 하고 해서 참~~ 배울 게 많은 것 같더군요.

 

그런데 지금까지 Autohotkey_L 로 넘어오고 싶어도 선뜻 넘어오지 못했던 게 기존의 코드 중 일부가 안 돌아가는 경우가 있어서 입니다.

 

가장 큰 걸림돌은 인코딩 이더군요.

 

Autohotkey_L Unicode 를 사용 하면서 기존 코드의 인코딩이 바뀌면서 정상적으로 동작하지 않는 경우였습니다.

 

이렇게 안 되는 거 일일이 찾아서 바꾸는 게 좀 귀찮기도 하고 제대로 안돼서 기존의 편리함이 없어져 버릴까 걱정도 되고 하더군요.

 

제 코드 중에 뮤토렌트 실행과 관련한 코드 부분이 있는데~

 

이 부분이 Autohotkey_L 로 넘어오면서 정상적으로 안 됐습니다.

 

기존의 코드는 아래와 같습니다.

 

#k::

DetectHiddenWindows, On

 

IfWinExist, ahk_class μTorrent4823DF041B09

{

 

    WinActivate, ahk_class μTorrent4823DF041B09

    WinActivate    

    WinShow

}

else

{            

    Run, "C:\Program Files\uTorrent\uTorrent.exe"

    WinWait, ahk_class μTorrent4823DF041B09

    WinShow

    WinActivate

}

return

 

위 코드는 μTorrent 가 실행 중에 있으면 화면에 보이게 하고 그렇지 않으면 실행 시키는 코드 입니다.

 

기존에 Autohotkey basic 에서는 굉장히 잘 동작했었죠~

 

그런데 Autohotkey_L 로 바뀌면서 정상적인 동작이 안 됐습니다.

 

몇 가지의 실험을 해보니 위 코드의 특수 문자인 μ 가 포함되어 있는 부분 때문이었습니다.

 

그래서 μ 부분 없이 torrent 프로그램을 인식 시키는 방법이 없을까 생각해 보다가 다음과 같은 코드를 만들었습니다.

 

뭐 만족스럽지는 않지만 정상적으로 동작은 하네요.

 

SetTitleMatchMode 2

#k::

DetectHiddenWindows, On

 

IfWinExist, Torrent 3

{

    WinActivate    

    WinShow

}

else

{            

    Run, "C:\Program Files\uTorrent\uTorrent.exe"

    WinWait, Torrent 3

    WinShow

    WinActivate

}

Return

 

위 코드에서 SetTitleMatchMode 2 로 설정한 것은 제목의 일부라도 일치 하면 IfWinExist가 인식하도록 하기 위한 것입니다.

 

현재 제 뮤토렌트 버전은 3.1.2 이고 프로그램의 타이틀 바는 다음과 같이 구성되어 있습니다.

 

 

타이틀바에 다운로드 정도도 표시되도록 해서 사용하고 있는데~

 

이러한 부분은 계속 변하는 부분이어서 특정한 값으로 μTorrent 를 구분하기가 어렵기 때문에~~

 

제목 중에서 변하지 않는 부분의 일부인 Torrent 3이 타이틀에 있으면 인식하도록 설정한 것이죠.

 

향후의 버전 업데이트 될 때를 생각해서 그 뒤의 .1.2 부분은 제외를 시켰습니다.

 

Autohotkey_L 을 사용하면서 저와 같은 문제가 있으신 분들은 참조 하시길~

 

그리고 더 나은 솔루션이 있으신 분들은 댓글 좀 부탁 드립니다.


반응형

댓글