프날 오토핫키 강좌  v2

⚠ 이 강좌는 오토핫키 v2를 다룹니다

지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만, 새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.

76. 창 활성화와 크기 조절


길고 어려웠던 GUI 프로그래밍 단원이 끝났습니다! 여러분은 어떠셨나요? 배운 내용을 이용하여 나만의 GUI 프로그램을 만들어 보셨으면 재미 있으셨을거라 생각합니다. 그래서 프로그래밍 문제도 도전정신(?)을 돋우는 내용으로 준비했고요.

저는 오토핫키로 처음 만든 GUI 프로그램이, 각종 사이트에 비밀번호를 자동으로 입력해주는 프로그램이었습니다. GUI에 아이디와 비밀번호를 입력할 수 있는 입력 상자를 준비했고, 체크 박스로 최대 세 가지 아이디/비밀번호를 바꿀 수 있었죠. 그 후 F1키를 누르면 아이디와 비밀번호를 Send로 자동 입력해주어 로그인 해주는 프로그램이었습니다.

비밀번호를 평문으로 소스코드에 저장시키기도 했고, 또 대부분 사이트의 ID/PW가 통일되어있었고... 지금 생각해보면 얼마나 보안에 무지했는지 참 어이가 없습니다. 그럼에도 참 의미있는 프로그램으로 기억합니다. 그 때의 기억이 즐거워서 지금까지 프로그래밍을 하고 있습니다.

각설하고, 이번 강부터 당분간 쉬운 내용입니다. 몇 개의 새로운 함수를 배우는 것으로 끝입니다. 먼저 컴퓨터 내에 있는 창을 다루는 방법을 배울 것입니다.

WinActivate

WinActivate는 특정한 창을 활성화 시키는 함수입니다.

WinActivate([WinTitle, WinText, ExcludeTitle, ExcludeText])
WinActivate 함수의 원형

어디서 많이 본 매개변수죠? Control 계열 함수에서 많이 보았던 창을 특정짓는 매개변수입니다.

당연히 WinTitle에는 창의 제목, WinText에는 창의 내용, ExcludeTitle과 ExcludeText는 적어준 문자열을 제목/내용으로 포함하지 않는 창을 지정하는 역할입니다. 또 지금까지 써왔던 것처럼 WinTitle을 제외하면 거의 안씁니다. 보통은 창의 제목만으로 하나의 창을 특정짓기 용이하기도 하고, 식별자를 통해 프로세스명이나 ID, 핸들값으로 하나의 창만 특정지을 수 있기 때문입니다.

따라서 제목이 '제목 없음 - Windows 메모장'인 프로그램을 활성화하고 싶다면 아래와 같이 적어주면 되겠네요.

...WinActivate("제목 없음 - Windows 메모장")

WinMove

WinMove는 특정 창의 위치를 옮기거나, 크기를 조절하는 함수입니다.

WinMove([X, Y, Width, Height, WinTitle, WinText, ExcludeTitle, ExcludeText])
WinMove 함수의 원형

원형이 상당히 길지만 다시 보면 역시 전부 익숙한 매개변수입니다. WinTitle 이후의 매개변수는 WinActivate의 경우와 같이 대상 창을 특정 지어주는 역할을 하고, 대부분 WinTitle 까지만 씁니다.

그리고 X, Y, Width, Height 매개변수는 이름에서 짐작하실 수 있다싶이 창을 이동할 위치와 크기를 설정해줄 수 있습니다. 우리 같이 여기까지 오토핫키를 공부해왔으니 영어를 잘 몰라도 X, Y는 가로와 세로 위치, Width와 Height는 너비와 높이를 말한다는 점은 알고 계실거라 믿습니다.

X, Y, Width, Height에서 현재 창에서 변경하고 싶지 않은 속성은 생략하시면 됩니다. 예를 들어서 'Example'이라는 제목을 가진 창의 위치는 그대로 하되 크기만 200, 200으로 바꾸고 싶다면 아래와 같이 쓸 수 있습니다.

...WinMove(,,200, 200, "Example")

콤마가 연속되어 보기 힘드신가요? 아래와 같이 X, Y 부분이 생략되어 있는 것을 표시해 보았습니다.

...WinMove(X, Y, 200, 200, "Example")

실습

이번 강은 쉬우니까 실습은 넘어가겠습니다. 단원을 마무리하는 79강 '프로그래밍 문제 (12)'에서 창 관련된 함수를 종합적으로 이용해보는 것으로 충분합니다.

질문하러 가기