오토핫키 - WinMove
오토핫키(AutoHotkey)는 윈도우 환경에서 다양한 작업을 자동화할 수 있는 강력한 스크립트 언어입니다. 그 중 WinMove 함수는 윈도우 창의 위치와 크기를 조절하는 데 매우 유용합니다. 이번 블로그 포스트에서는 WinMove 함수의 기본 사용법부터 다양한 활용 방법까지 자세히 알아보겠습니다.
WinMove 함수 기초
기본 사용법
WinMove 함수는 특정 창의 위치와 크기를 변경합니다. 기본 구문은 다음과 같습니다.
WinMove, 윈도우 제목, 윈도우 텍스트, X, Y, 너비, 높이
- 윈도우 제목: 이동할 창의 제목입니다.
- 윈도우 텍스트: 창 내부의 특정 텍스트입니다(선택 사항).
- X, Y: 창의 새로운 좌표입니다.
- 너비, 높이: 창의 새로운 크기입니다(선택 사항).
WinMove, Untitled - Notepad, , 100, 100, 800, 600
이 스크립트는 "Untitled - Notepad" 창을 화면 좌표 (100, 100)로 이동시키고, 창의 크기를 800x600으로 변경합니다.
현재 활성 창 이동
현재 활성 창을 이동시키는 방법입니다. 창 제목을 생략하고 A를 사용하여 활성 창을 지정할 수 있습니다.
WinMove, A, , 200, 200
이 스크립트는 현재 활성 창을 화면 좌표 (200, 200)으로 이동시킵니다.
특정 크기 변경 없이 이동
창의 위치만 변경하고 크기를 변경하지 않으려면 너비와 높이를 생략할 수 있습니다.
WinMove, Untitled - Notepad, , 300, 300
이 스크립트는 "Untitled - Notepad" 창의 위치를 (300, 300)으로 이동시키고 크기는 변경하지 않습니다.
다양한 활용법
창 정렬
여러 창을 정렬하여 화면을 효율적으로 사용할 수 있습니다. 예를 들어, 두 개의 메모장 창을 좌우로 나란히 배치할 수 있습니다.
; 왼쪽 창
WinMove, Untitled - Notepad, , 0, 0, A_ScreenWidth/2, A_ScreenHeight
; 오른쪽 창
WinMove, Other - Notepad, , A_ScreenWidth/2, 0, A_ScreenWidth/2, A_ScreenHeight
이 스크립트는 두 개의 메모장 창을 화면 좌우로 나란히 배치합니다.
창의 중앙 배치
특정 창을 화면 중앙에 배치할 수 있습니다.
WinGetPos, , , Width, Height, Untitled - Notepad
WinMove, Untitled - Notepad, , (A_ScreenWidth-Width)/2, (A_ScreenHeight-Height)/2
이 스크립트는 "Untitled - Notepad" 창을 화면 중앙에 배치합니다.
반복 작업
여러 개의 창을 순차적으로 이동시킬 수 있습니다.
titles := ["Untitled - Notepad", "Calculator", "Paint"]
x := 0
y := 0
for index, title in titles
{
WinMove, %title%, , x, y
x += 200
y += 200
}
이 스크립트는 세 개의 창을 (0,0), (200,200), (400,400) 위치로 이동시킵니다.
고급 활용법
조건부 창 이동
특정 조건에 따라 창을 이동시킬 수 있습니다. 예를 들어, 특정 창이 활성화될 때만 이동하는 경우.
SetTitleMatchMode, 2 ; 부분 일치 허용
IfWinActive, Notepad
{
WinMove, A, , 500, 500
}
이 스크립트는 제목에 "Notepad"가 포함된 창이 활성화될 때 해당 창을 (500,500) 위치로 이동시킵니다.
사용자 입력 기반 이동
사용자 입력을 받아 창의 위치를 동적으로 변경할 수 있습니다.
InputBox, xPos, X 좌표, 창의 새로운 X 좌표를 입력하세요:
InputBox, yPos, Y 좌표, 창의 새로운 Y 좌표를 입력하세요:
WinMove, Untitled - Notepad, , %xPos%, %yPos%
이 스크립트는 사용자로부터 X와 Y 좌표를 입력받아 "Untitled - Notepad" 창을 해당 위치로 이동시킵니다.
윈도우 탐지 및 이동
창이 존재할 때만 이동시키는 조건을 추가할 수 있습니다.
IfWinExist, Untitled - Notepad
{
WinMove, Untitled - Notepad, , 100, 100
}
else
{
MsgBox, 메모장이 실행 중이 아닙니다.
}
이 스크립트는 "Untitled - Notepad" 창이 존재할 경우 해당 창을 (100,100) 위치로 이동시키고, 존재하지 않으면 메시지 박스를 표시합니다.
스크립트 효율성 높이기
매크로를 사용한 창 이동
매크로를 사용하여 창 이동을 자동화할 수 있습니다. 특정 키 조합을 눌러 창을 이동시킬 수 있습니다.
^!m:: ; Ctrl + Alt + M 키 조합
WinMove, A, , 300, 300
return
이 스크립트는 Ctrl + Alt + M 키를 눌렀을 때 현재 활성 창을 (300, 300) 위치로 이동시킵니다.
다중 모니터 환경에서 창 이동
다중 모니터 환경에서 창을 특정 모니터로 이동시킬 수 있습니다.
; 첫 번째 모니터로 이동
WinMove, Untitled - Notepad, , -1920, 0
; 두 번째 모니터로 이동
WinMove, Untitled - Notepad, , 0, 0
이 스크립트는 "Untitled - Notepad" 창을 첫 번째 모니터로 이동시킨 후, 두 번째 모니터로 이동시킵니다.
결론
오토핫키의 WinMove 함수는 윈도우 창의 위치와 크기를 조절하는 데 매우 유용한 도구입니다. 이번 글에서는 WinMove 함수의 기본 사용법부터 창 정렬, 중앙 배치, 조건부 이동, 사용자 입력 기반 이동 등 다양한 활용 방법을 알아보았습니다. 이를 통해 여러분의 스크립트를 더욱 유연하고 효율적으로 만들어 보세요.