Autohotkey 를 사용하여 윈도우를 자동화하는 경우 다양한 사례들에 부딪히게 되는데~ 오늘은 제가 최근에 겪은 사례와 그 해결 방법에 대해서 소개를 해 보렵니다.

저는 PC에서 카카오톡 PC 버전을 사용하고 있습니다. 로그인 설정에 따라서 다르겠지만 저는 카카오톡 PC 버전에 “잠금 모드로 로그인 설정”을 해 놔서~ 실행되면 아래의 그림들과 같이 잠금 모드로 실행되고 로그인 비밀번호를 입력해 줘야 PC 에서 카카오톡을 사용할 수 있습니다.

그러다 보니 매번 비밀번호를 입력하는 것이 귀찮아서 Autohotkey 를 사용하여 카카오톡 로그인 자동화를 만들어 보고 싶었습니다. 그런데 만들다 보니 카카오톡 비밀번호를 넣기 위해서는 비밀번호를 넣는 Edit3 control 이 활성화 될 때까지 기다려야 했습니다. 물론 조금 단순하게 그냥 sleep 을 오래줘서 기다리게 하는 방법도 있겠지만 Edit3 control 의 유무를 체크하게 하는 방법을 사용하고 싶었습니다.

그래서 Autohotkey 로 특정창의 특정 control 유무를 체크하는 방법을 알아보니 ControlGet 이라는 명령어가 있었습니다. ControlGet 의 메뉴얼은 아래 주소에서 확인할 수 있습니다.

https://autohotkey.com/docs/commands/ControlGet.htm

아래는 카카오톡 창에서 패스워드를 입력하는 Edit3 컨트롤이 사용 가능한지를 확인하는 코드 입니다.

ControlGet, OutputVar, Enabled, , Edit3, 카카오톡 ahk_exe KakaoTalk.exe

Msgbox % OutputVar

매뉴얼을 보시면 아시겠지만 위 코드에서 Enabled 부분이 SubCommand 인데 처음에는 Edit3 가 보이는지 안 보이는지를 체크 하려고 Visible SubCommand 를 사용 했습니다.

그런데 아래와 같이 사용자 눈에는 보이지만 초기에는 Visible 이 0 이고~

Edit3에 커서가 Focus 되서 뭔가 하나라도 입력이 되어 있는 경우에만 Visible 이 1 로 표시된다는 걸 알 수 있었습니다.

따라서 Edit3 컨트롤이 사용가능한지 아닌지를 판단하기 위해서는 Enabled SubCommand 를 사용하는게 맞는 것으로 보였습니다.

결론적으로 Edit3 컨트롤이 입력 가능 할 때까지 기다렸다가 암호를 입력하고 Enter 를 쳐서 로그인하는 코드는 아래와 같습니다. passWordStr 변수의 값을 자신의 PASSWORD 로 변경 후 사용해 보시기 바랍니다.

passWordStr:="PASSWORD"

Loop

{

ControlGet, OutputVar, Enabled, , Edit3, 카카오톡 ahk_exe KakaoTalk.exe

if OutputVar = 1

break

Sleep, 333

}

Sleep, 333

ControlSend, Edit3, %passWordStr%{Enter}, 카카오톡 ahk_exe KakaoTalk.exe


Windows 7 이하에서는 원격지에 리눅스 터미널에 접속 하기 위하여 putty 를 주로 사용하였습니다. 저는 아래주소에서 소개를 했듯이 한글 putty 를 주로 사용하고 있었습니다.

http://iamaman.tistory.com/760

http://iamaman.tistory.com/2247

그런데 최근에 Windows 10 을 사용하면서 아래 주소에서 소개를 했던 WSL(Windows Subsystem for Linux) 통해 Windows 내에 리눅스를 설치 한다든지 하는 다양한 기능들이 추가 되었습니다.

http://iamaman.tistory.com/2317

Windows 10 에는 openssh Client, Server 가 추가 돼서 더 이상 putty 를 사용하지 않아도 됩니다. ssh가 설치가 되는지 확인하기 위해서 Powershell 에서 ssh 라고 타이핑 하고 엔터를 칩니다. 반응이 없다고 한다면 다음과 같이 설치 할 수가 있습니다.

1. 검색창에 앱 이라고 치면 아래와 같이 앱 및 기능 이 나오고 클릭해서 들어갑니다.

2. 앱 및 기능 관리에서 선택적 기능 관리에 들어갑니다.

3. OpenSSH 클라이언트를 설치합니다. 현재 저는 설치가 돼서 제거 버튼이 있지만 터치가 안 되신 분들은 설치 버튼이 있을 것입니다.

4. OpenSSH 서버를 설치 하고 싶으신 분들은 기능 추가에 들어가서 아래와 같이 OpenSSH 서버 를 클릭하고 마찮가지로 설치 버튼을 눌러서 설치하시면 됩니다.

5. Windows 재부팅으로 하고 Powershell 을 실행한 후에 아래와 같이 ssh 서버에 접속하고 password 를 입력하면 원격서버에 접속이 됩니다.

ssh ID@server_IP -p port_Number

ex) ssh abc@localhost -p 1234

저는 Synology NAS 를 사용하고 있어서 파일 관리를 위해 ssh 를 자주 사용하는 편인데 Windows 10 에서는 추가 프로그래밍 필요 없으니 개발자 입장에서 확실히 더 편리해진 거 같네요.

OpenSSH 를 설치하면 scp, sftp 도 설치가 되므로 서버로부터 파일을 가져 오는 것도 가능하더군요.

이제 Windows10 에서 한글 코타나만 제대로 되면 훨씬 더 좋아질 것 같습니다.



컴퓨터를 사용하다 보면 굉장히 다양한 불편한 점들이 있습니다. 이런 불편한 점들이 한 두 번에 그친다면 문제가 안되겠지만 반복적으로 일어난다면 문제가 될 것입니다. 오늘은 이러한 반복적인 불편함들을 오토핫키를 사용하여 해결하는 방법에 대해서 사례와 함께 소개해 보려 합니다.


저는 개인적으로 Synology NAS에 Git 서버를 설정한 후, 오토핫키 파일들을 Git을 사용하여 형상 관리를 하고 있습니다. Windows 에서 TortoiseGit 을 사용하고 있고 동기화를 하거나 커밋을 하는 경우 아래 그림과 같이 password 를 입력하라는 화면이 나옵니다.

TortoiseSVN 을 사용할 때는 password 를 쉽게 저장할 수 있었는데 TortoiseGit 사용하는 경우 암호를 저장하는 방법을 아직까지 잘 알지 못합니다. 그래서 임시방편으로 암호 입력창이 나오는 경우 오토핫키를 사용하여 자동으로 암호를 입력하도록 했습니다.


위 코드는 0.15 초마다 MonitorActiveWin Label 부분에 코드를 실행 시키는 Autohotkey 프로그램입니다. 코드를 보시면 아시겠지만 확인하는 시점에 TortoiseGit 암호입력창이 있으면 암호를 입력하고 Ok 버튼을 누르게 됩니다.

scite4autohotkey 설치시 같이 설치되는 ‘Active Window Info’ 와 같은 프로그램을 사용하여 내가 조작하고자 하는 컨트롤이 어떤 것인지를 확인할 수 있습니다. 위 코드에서는 Edit1 에 암호를 입력해 주고, Button1 버튼을 누른다는 것을 확인할 수 있습니다.


위 코드를 사용하기 위해서는 MyPassword 부분에 본인의 암호를 입력하고 실행하시면 됩니다.


추가적으로 위와 같이 무언가를 반복하는 코드는 컴퓨터가 시작하자마자 계속해서 실행 되도록 하는게 편리합니다. Windows 가 시작하자마자 프로그램이 실행되도록 하기 위하여 시작 프로그램 폴더(Windows 7 64 bit 기준)에 위의 Autohotkey 파일을 넣어두면 운영체제가 시작할 때마다 자동으로 실행이 되게 됩니다.


C:\Users\사용자계정\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup


Autohotkey 을 비롯하여 대부분의 코딩시 변수값이 비었는지를 확인해야 하는 경우가 종종 있다.

 

웹에서는 Form 의 ID 나 Password 값 등이 비었다면 사용자에게 다시 입력해 달라는 요청을 하기 위해서 등등에 많이 사용한다.

 

Autohotkey 에서는 다음과 같이 변수가 비었는지를 확인한다.


StringV =

 

if !StringV

{

    MsgBox StringV is Empty

}

else

{

    MsgBox StringV is %StringV%

}

 

위 코드를 실행해보면 다음과 같이 비었다는 MsgBox 나오는 것을 확인 할 수 있다.

 


+ Recent posts