본문 바로가기

Autohotkey강좌

Autohotkey#37 Autohotkey로 휴대폰 제어하기

반응형

https://youtu.be/dFd08G36E3Y

 

- YouTube

 

www.youtube.com

이번에는 Autohotkey로 휴대폰을 제어하는 방법을 알려 드립니다.

먼저 Scrcpy라는 tool이 필요합니다.

여기( https://sourceforge.net/projects/scrcpy.mirror/ )에서 다운로드 하면 됩니다.

이 tool은 휴대폰이나 tablet등 모바일화면을 PC에 보여주는 tool입니다. 무료이므로 편하게 사용하면 됩니다.

tool을 구했으니, 실제로 어떤 시나리오로 사용할지를 고민해야 합니다. 간단하게 만들어 보죠.

내가 원하는 사이트를 접속하고 화면을 조금 이동시키는 기능과

휴대폰에서 일부 serial정보를 읽어 오는 기능을 하는 단순한 시나리오로 해 보겠습니다

접속할 사이트를 받아 와야 하므로 edit창과 실제로 접속하기 위한 버튼창을 만들어야겠고

휴대폰의 serial 번호를 읽어오는 부분은 그냥 버튼으로 처리하겠습니다.

아래는 간단히 구성한 UI화면입니다.

이제 실제로 구현을 해야죠.

ButtonConnect와 ButtonReadInfo를 만들면 되겠습니다.

ButtonConnect에서는 사용자가 입력한 사이트명을 읽어 오고 scrcpy를 실행한 후

scrcpy창으로 이동한 후에 휴대폰에서 브라우저를 띄우고 주소창에 접속할 사이트를 입력해 주고

사이트 내용이 갱신되도록 잠시 기다렸다가, 화면을 옆으로 조금 옮겨 주는 기능입니다.

순차적으로 scrcpy를 띄우는 부분은 다음과 같습니다. scrcpy는 윈도우 경로상에 잡혀 있어서 호출하면 실행된다는 전제입니다.

run, scrcpy.exe
sleep, 500

다음으로 scrcpy창으로 이동을 위해서는 winactivate를 사용하면 됩니다.

winactivate, ahk_exe scrcpy.exe     ;이 방법도 가능하고

;winactivate, ahk_class SDL_app    ; 이 방법도 가능합니다.
sleep, 1000

명령 사이의 sleep시간은 충분히 주는게 좋습니다.

다음으로는 브라우저를 띄워야 하는데 어떻게 하면 좋을까요? 어렵게 하려면 해당 브라우저의 apk를 호출하는 방법이 가능한데 너무 어려운 방법이므로 그냥 브라우저 아이콘을 클릭하는 것으로 하시죠.

브라우저 아이콘의 위치를 어떻게 알아야 할까요? 네 그렇습니다. autohotkey 서브명령인 window spy를 띄워서 알아내야 합니다,   

Window Spy를 뛰우고 나서, scrcpy를 실행한 후에 화면상에서 브라우저 위치를 클릭하면 window spy창에 좌표가 표시됩니다.

제 휴대폰 기준으로 브라우저 위치는 window 좌표를 읽어 오면 됩니다. 참고로 screen좌표는 전체 화면에서 위치이지만, scrcpy윈도우의 위치가 변경되면 바뀌므로 screen좌표를 사용하면 안 됩니다.

브라우저 위치를 알았으니 다음에는 사이트명을 입력할 주소창의 위치도 알아야 합니다. 동일한 방법입니다.

주소창의 위치를 알았다면 실제로 접속할 사이트명을 읽어와야 하겠죠.

그래서 ButtonConnect시작되자마자 바로 아래 명령을 수행해야 합니다.

Gui, Submit, nohide

그러면 사용자가 입력한 주소(Site)를 읽어왔습니다. 이제 그 내용을 scrcpy창에 뿌리면 됩니다. 어떻게요? 네 sendinput하면 되죠. 
sendinput %Site%{enter}
Sleep, 3000

 

sleep시간이 너무 길지 않냐구요? 네 여유있게 주시는게 오류가 적습니다.

3초정도로 여유롭게 잡아서 주면 휴대폰이 좀 늦더라도 충분히 내용이 다 올라옵니다. 

이후에 화면 이동인데, 저는 우측으로 화면을 끄는 동작을 하려고 합니다. 우리는 여기서 아래 함수를 사용할 수 있습니다. 

MouseClickDrag, Left, 350, 540, 100, 540   ; , 10 , R

sleep, 500

 

MouseClickDrag의 첫번째 인자는 마우스 어떤 키를 누를건지이며, 다음 좌표 2개는 시작 위치 x, y이고

다음 좌표 2개는 이동할 위치 x, y입니다. 다음 옵션은 이동할 속도인데 0~100사이 값이며, 0이 가장 빠르고 100이 가장 느립니다. 마지막 옵션은 상대위치인지 절대위치인지를 표시하는 것입니다. 기본값은 절대위치입니다. 만약 상대위치로 주려면 R을 표시하면 됩니다. 우리는 속도와 상대위치를 사용하지 않을거라서 코멘트처리했습니다.

이후에는 약간의 sleep시간을 주면 됩니다.

 

다음은 휴대폰에서 serial값을 읽어오는 부분입니다. 대부분 사용자는 사용할 일이 없고, 휴대폰에 관련된 업무를 하시는 분들은 간혹 사용할 일이 있습니다. 예제로 보여 드리는 것이니 각자 상황에 맞게 사용하시면 됩니다.

serial대신에 다른 정보를 읽어오려면 해당 값을 보여주게 하시면 됩니다. 

본인의 컴퓨에서 adb라는 tool이 설치되어 있고, 경로상에 잡혀 있다는 전제입니다.

앞서 scrcpy를 설치하면 거기에 이미 adb.exe가 있으므로 해당 경로가 path에 추가되었는지 확인하면 됩니다.

추가로 grep도 윈도우 버전으로 가지고 있어야 합니다. 없는 분들은 아래( http://downloads.sourceforge.net/gnuwin32/grep-2.5.4-bin.zip )에서 받으세요.

 

도스창을 띄우고 adb명령을 다음과 같이 보내면 serial값을 읽어 옵니다.  

run, cmd.exe
sleep, 300
sendinput adb shell getprop | grep serial {enter}
sleep, 300

실행결과는 다음과 같습니다.

 

전체 소스는 아래 링크에서 받으세요.

mobileRead.ahk
0.00MB

실행파일만 필요한 분은 아래에서 받으세요.

mobileRead.exe
1.13MB

 

 

반응형