프날 오토핫키 강좌  v2

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

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

47. 창의 구성 알기


지금까지는 MouseClickSend의 조합으로 키보드/마우스 입력을 구현하였습니다. 그러나 이럴 경우, 자동화 프로그램을 실행하면서 그 컴퓨터를 정상적으로 사용하긴 힘들 것입니다. 컴퓨터 이용 중에 키보드와 마우스 입력이 저절로 될 테니까요.

그래서 앞으로 우리는 컨트롤 함수를 배울 것입니다. 활성 창에 대한 개념을 배웠었죠? 컨트롤 함수를 이용하면 활성되지 않은 창에도 키보드/마우스 입력을 구현할 수 있습니다. 굉장히 많은 컨트롤 함수가 있지만, 우리는 흔히 비활성 입력 함수로 불리는 ControlClick, ControlSend와 알아두면 좋은 ControlSetText를 배울 것입니다.

컨트롤 함수는 실제 키보드 입력이나 마우스 커서의 동작을 재현 하지 않습니다. 단지, 입력을 전송할 창에 '입력 신호'를 보내어, 마치 실제로 입력한 것과 같은 효과를 줄 수 있습니다. 입력을 전송하고자 하는 창이 비활성 상태에 있는 채로 '그 창에만' 클릭이나 키 입력을 할 수 있는 것입니다. 따라서 자동화 작업 중에도 여러분의 컴퓨터 이용에는 큰 지장이 없습니다.

이를 잘 이해하기 위해선 '창'의 구조에 대해서 알아야합니다.

창의 구조

우리가 사용하는 Windows 운영체제는 GUI(Graphic User Interface) 기반이자, 멀티 태스킹을 지원합니다. 어렵게 생각하지 마세요. 여러 창을 동시에 띄워두고 컴퓨터 이용을 할 수 있다는 것입니다.

우리가 직접 실행하는 프로그램은 흔히 '창'을 가졌고, 그 창이 화면에 나타나기 때문에 마우스로 클릭을 하여 여러 동작을 할 수 있습니다.

제목 표시줄과  버튼, 선택 상자, 이미지 등이 있는 창의 모습 사진 1. 창의 모습

창에는 아래와 같이 '제목'과 '내용'이 있고, 가장 중요한 '컨트롤'이라는 개념이 있습니다.

  • 제목(Title): 창의 제목. 제목 표시줄이 있다면 그곳에 표시됨.
  • 내용(Text): 창이 가지고 있는 내용.
  • 컨트롤(Control): 창이 가지고 있는, 사용자의 입력을 받거나 글자를 보여주는 등 상호작용을 하는 요소

여러 창이 있지만, 제목과 내용으로 창을 구분지을 수 있습니다. "ABC라는 제목을 가진 창", "Needle이라는 내용을 가진 창"처럼 말입니다. 혹은 둘 모두 쓸 수 있죠. "ABC라는 제목을 가졌으며 Needle이라는 내용을 가진 창"처럼요.

컨트롤

아래와 같이 창을 이루는 눈에 보이는 요소 하나 하나가 모두 컨트롤입니다. 컨트롤은 아래와 같이 여러 종류와 모양으로 존재합니다.

버튼, 선택 상자, 리스트 박스에 각각의 명칭이 적혀있고, 버튼 컨트롤은 2개가 있는 모습 사진 2. 컨트롤의 모습

그런데 사진에서 '버튼'처럼 같은 종류의 컨트롤이 보입니다. 이들을 구분하기 위해 컨트롤이 가지고 있는 고유의 이름인 ClassNN을 이용할 수 있습니다.

각 컨트롤은 ClassNN이라는 고유한 별칭을 가지고 있습니다. 따라서 프로그램을 작성할 때 ClassNN을 이용하면 여러 컨트롤 중 하나를 명확히 지정해줄 수 있습니다. "Button1을 클릭해줘", "Edit3에 글씨를 써줘"와 같이 말입니다.

또, 컨트롤 또한 내용을 가지고 있습니다. 컨트롤이 가지고 있는 글 내용으로도 여러 컨트롤을 구분할 수 있습니다. "Note 라는 내용을 가진 컨트롤" 처럼 말입니다. 이렇게 하면 같은 종류의 컨트롤이라도 구분지어 지정해줄 수 있습니다.

사진 3. 프로그램 창의 구조

창과 컨트롤 정보 알아오기

창과 컨트롤 정보 역시 Window Spy를 통해 알아올 수 있습니다. 알고자 하는 창과 컨트롤 위에 마우스 커서를 올리면, 아래와 같이 창의 제목은 맨 위에, 컨트롤 정보는 중간부분에 표시됩니다.

박스 안에 *제목 없음-메모장 이라고 적혀있고, Control Under Mouse Position 박스 안엔 ClassNN과 Text가 적혀있고 그 옆에 컨트롤의 ClassNN과 내용이 Edit 1, Test Text 라고 적혀있다. 사진 4. Window Spy에서 창의 Title과 컨트롤의 ClassNN, Text가 표시된 모습

창의 내용은 더 밑에 표시됩니다.

Visible Text 문구 밑에 UiRibbonDockTop, Ribbon이라고 적혀있는 상자의 모습 사진 5. 창의 Text

위의 경우에선 아래와 같이 각각의 정보를 알아올 수 있죠.

  • 창의 제목: *제목 없음 - Windows 메모장
  • 창의 내용: UIRibbonDockTop, Ribbon, ...
  • 컨트롤의 ClassNN: Edit1
  • 컨트롤의 내용: Test text :)

일단 이정도로만 알아두고 본격적으로 컨트롤 함수를 배워봅시다.

질문하러 가기