PPT 슬라이드 쇼 제어 프로그램
Download Link
: https://github.com/kcm02/PPT_Sliding
어느날 교회에서 연극 준비를 돕고 있는데, 배경 담당을 하시는 분으로부터 질문이 들어왔다.
슬라이드 쇼를 백그라운드에서도 제어하고 싶은데 방법이 없을까요?
이번에 연극 준비를 하게 된 곳은 컴퓨터가 하나밖에 없었고, 음향 프로그램과 PPT를 동시에 제어해야 해 포커스가 벗어난 백그라운드 창에서도 슬라이드 쇼를 넘기고 싶다는 의뢰였다. 사실 이런 작업은 해본 적이 없었지만 왠지 방법이 있을 것 같아 무심결에 제가 할 수 있을 것 같은데요? 라고 말해버리고 말았다.
어쨌든 만들어 보겠다고 말해본 이상 완벽하게 만들고 싶었고, 방법을 찾아보던 중 발견한 것이 바로 AutoHotKey
라는 윈도우 스크립트 언어였다.
AutoHotKey
란?무료 오픈 소스 기반의 윈도우 스크립트 언어로, 웹 개발보다는 주로 매크로 등의 기능을 만들 때 사용하는 언어이다. IOS
의 단축어 기능처럼, 특정 동작을 통해 사전에 정의한 기능을 수행하게 하는 윈도우판 단축어라고 할 수 있겠다.
나는 특정 키를 누르면 슬라이드 쇼에 Page Down
, Page Up
키를 전달하게 만들고 싶었기에 나에겐 안성맞춤인 언어였다. AutoHotKey
의 설치, 사용법 등에 관해서는 추후에 따로 기술하도록 하겠다.
; Persistent 스크립트를 계속 실행 상태로 유지
#Persistent
SetTitleMatchMode, 2 ; 윈도우 제목의 일부분으로 윈도우를 찾을 수 있도록 설정
; 현재 활성화된 창의 핸들을 저장할 변수
originalWindow := ""
; Ctrl + Right Arrow를 눌렀을 때 Page Down 키 입력을 슬라이드 쇼에 보냄
^Right::
; 현재 활성화된 창의 핸들을 저장
originalWindow := WinExist("A")
IfWinExist, 슬라이드 쇼
{
WinActivate ; 슬라이드 쇼 창을 활성화
Send, {PgDn}
Sleep, 100 ; 잠시 대기
; 원래 활성화된 창으로 포커스 복원
WinActivate, ahk_id %originalWindow%
}
return
; Ctrl + Left Arrow를 눌렀을 때 Page Up 키 입력을 슬라이드 쇼에 보냄
^Left::
; 현재 활성화된 창의 핸들을 저장
originalWindow := WinExist("A")
IfWinExist, 슬라이드 쇼
{
WinActivate ; 슬라이드 쇼 창을 활성화
Send, {PgUp}
Sleep, 100 ; 잠시 대기
; 원래 활성화된 창으로 포커스 복원
WinActivate, ahk_id %originalWindow%
}
return
이 프로그램의 동작은 크게 3가지로 나눌 수 있다.
PgDn
, PgUp
버튼을 보낸다.Ctrl
+ Right Arrow
: 다음 슬라이드로 이동 (Page Down
키를 슬라이드 쇼에 전송)Page Up
키를 슬라이드 쇼에 전송)여기서 Ctrl
은 키보드상 왼쪽에 있는 Ctrl
을 의미한다. 키보드에 있는 방향키 중 ➡️,⬅️와 함께 누르면 된다.
originalWindow := WinExist("A")
···
WinActivate, ahk_id %originalWindow%
특히 이 프로그램의 장점은 언제 어디서나 단축키만 누르면 슬라이드 쇼가 실행되고 다시 원래 창으로 포커스를 복원한다는 점이다.
이러한 특징 덕에 우리 교회에서는 마우스 담당(음향 프로그램 제어), 키보드 담당(슬라이드 쇼 제어)을 나누어 한 컴퓨터를 두 가지 방식으로 사용할 수 있게 되었다.
exe
파일 사용 시PPT_Sliding.exe
를 다운받는다.
위 실행 파일을 실행한다.
PPT 프로그램을 실행 후, 슬라이드 쇼를 시작해 단축키를 사용하여 슬라이드를 제어한다.
ahk
파일 사용 시AutoHotkey를 설치한다.
PPT_Sliding.ahk
를 다운받는다.
스크립트를 실행한다.
PPT 프로그램을 실행 후, 슬라이드 쇼를 시작해 단축키를 사용하여 슬라이드를 제어한다.
IfWinExist, 슬라이드 쇼
이 스크립트는 "슬라이드 쇼"라는 이름을 가진 창을 대상으로 동작하기 때문에, 만약 슬라이드 쇼 창의 이름이 다르다면 스크립트를 수정하여 창 이름을 변경해야 한다.
이번 프로그램은 나에게 있어 의미가 깊은 프로그램이다. 그 동안은 내가 만들고 싶은 것들을 만들었다면, 이번에는 실제 사용자의 요구에 맞춰 개발을 했기 때문이다.
또한 내가 개발한 프로그램을 현실에서 사용하는 모습을 보고, 개발로 인해 복잡하던 작업이 한 순간에 편리해진 것을 보니 뿌듯하기도 하고 개발의 중요성을 다시 한 번 깨닫게 된 것 같다. 앞으로도 다양한 언어로 다양한 개발을 해보고 싶다!