팟플레이어 SDK 를 AutoHotkey 에서 이용해 보기
안녕하세요. Covid19 초창기 Drive Through 최초 제안했던 Sage 인사드립니다.
뭐 지금은 세월이 지나 무색해졌지만, 그 당시 상황에서는 최소 나라를 구했다고 생각합니다.
차라리 아이디어를 처음 낸 것이 본인이 아니였다면 편했을 텐데, 맘 고생 많이 했습니다. ^^;
해당 SDK 댓글에 한 수 부탁을 요청하는 답글을 이제서야 봐서 작성하게 되었습니다.
(2018 년도 글에 멈춤시간 얻기 개발 요청하는 글도 보이더군요. 이거 응용하면 가능합니다)
이제야 답글을 보았네요. 세월이 흘러서 다시 집중(이해)하는데 시간 좀 걸렸습니다.
오토핫키 기본은 안다는 가정하에 적습니다.
// Send(Post)Message(hWnd, POT_COMMAND, POT_SET_VOLUME, Volume);
SDK 윗 부분에 예문 인데요, 볼륨조절하는 명령이라고 짐작 가능하죠?
; autohotkey 로 변환하기 설명 2022-09-01 by Sage
; SendMessage, POT_COMMAND, POT_SET_VOLUME, Volume,, hWnd ; 위 예문을 오토핫키식으로, Volume 은 직접넣는 수치/변수
; SendMessage, Msg, wParam, lParam,, WinTitle(hWnd) ; hWnd 는 오토핫키에서 Wintitle 로 얻죠.
; GET류 결과는 errorlevel 내장변수로 리턴됩니다.
현재 재생 시간도 뭐 이렇게 하니 되네요. ms 단위라서 변환좀 필요하고요. 1000 으로 나누면 초고 60초가 분이고 다 아시죠?
SendMessage, POT_COMMAND, POT_GET_CURRENT_TIME,,, ahk_class PotPlayer64
오토핫키는 #define 이 없기 때문에 전부 변수로 넣어버립니다.
WM_USER 값도 없기 때문에 직접 넣습니다. 값은 과거 구글링으로 찾음.
; ~~~~~~~~~
POT_COMMAND := WM_USER := 0x0400 ; 첫줄은 이렇게 되고요.
POT_GET_VOLUME := 0x5000 ; 0 ~ 100 ; 두번째 줄부터는 이렇게 다 바꿉니다.
...
; ~~~~~~~~~
제가 실제 테스트해본 문장.
ms 를 시간 형식으로 바꾸는 부분을 구글링했는데요.
+= 인데 뒤에 , seconds ? 어 이런 명령도 있었나? 이해하는데 시간이 좀 걸렸습니다.
직접 변경해보고 도움말 찾아서 분석해서 이해를 할 수 있었지요.
그냥 1000 으로 나누고 60 으로 나누고 round, mod 등등 처리하면 더 쉬울 겁니다.
; ----------------
^!1::
SendMessage, POT_COMMAND, POT_GET_CURRENT_TIME,,, ahk_class PotPlayer64
time := 20220901 ; 분초를 00:00 설정하기위한 임의의 날짜(포멧용 숫자) 2022-09-01
time += ErrorLevel/1000, seconds ; ,seconds 변수를 [날짜로 여기고] 초단위로 (증가) 연산
FormatTime, mmss, %time%, HH:mm:ss ; HH 24시간제:mm 분:ss 초, time 숫자를 날짜(포멧) 스트링으로 변환 mmss 에 저장.
Msgbox, % mmss
return
esc::exitapp
Return
; ----------------
00:01:16
와 같은 실험 결과를 얻었습니다.