비활성의 개념을 12-1강에서 잡았으면, 드디어 비활성 입력을 사용해야 할 때가 왔다.
사실 강좌를 하기  막막할 정도로 어렵고, 한 번에 이해가 힘든 부분이라서 걱정이다. 이럴 때일수록 특히 필요한 게, 직접 해보는 자세이다.
 강좌만 읽는 건 그냥 소설책을 읽는 것과 다름없다. 그게 도움이 되려면, 직접 해보는 것이 상당히 큰 도움이 될 테니 지금 모바일로 보고 계신 분들은 컴퓨터 앞에 앉으셨으면 좋겠다. (물론, 한번 쭉 읽고 이해가 간다면 큰 문제없겠지만, 이 경우도 한 번쯤 해보는 것이 좋다.)

비활성 보내기, ControlSend
명령어의 이름 중 익숙한 부분이 있다. 바로 Send인데, 여기까지 왔으면 Send 정도는 사용할 수 있을 거라 본다. ControlSend는 이름에서 알 수 있듯이 Send의 비활성 버전이다. Send와 같은 역할을 하지만, 그것을 비활성 상태로 진행한다는 것이다. 기본적인 문법(파라미터)부터 살펴보도록 하겠다.

ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]

보자마자 히익 소리가 절로 나올 것이다. 지금까지 나온 명령어 중에서 가장 파라미터가 복잡하다 해도 과언이 아니기 때문이다. 하지만 평상시 쓰이는 비활성 보내기 작업에서는 저렇게까지 필요 없다. 3번째 파라미터, 즉 Wintitle 부분까지만 알면 충분하다.
따라서 이번 강좌에서는 Wintitle 파라미터까지만 안내하도록 하겠다. 나머지 부분은, 필자도 쓰지 않는다.

첫 번째 파라미터인 Control은, 이름만 들어도 복잡해 보인다. 프로그램이 '동네'라면 컨트롤은 '집 주소'이다. 원하는 곳에 택배를 보낼 때 주소를 정확히 확인하는 것처럼, 원하는 부분에 값을 보낼 때는 그 부분(컨트롤)의 이름(ClassNN)을 정확히 써주어야 한다. 말이 상당히 어려운데, 다음 그림을 보자.

사진 12-2-1: 비활성 보내기의 작동 방식

비활성 보내기는 다음과 같은 구조로 이루어져 있다. '타이틀'이라는 프로그램에 있는 '어떠한 컨트롤'의 이름으로 값을 보내면, 그 어떠한 컨트롤 내에 그 값이 보내지는 것이다. ClassNN은 컨트롤의 이름이다. 가볍게 아래와 같이 생각하자.

음, 이 물건 받으실 주소는.. 서울시 타이틀구 컨트롤동 클래스(ClassNN)씨 앞이네요?

자 다시, 파라미터 까먹었을 테니 다시 보자. 필요 없는 파라미터는 잘라내었다.

ControlSend [, Control, Keys, WinTitle]

그러면 첫 번째 파라미터에는 프로그램의 컨트롤 이름, 즉 ClassNN을 써주어야 한다. 직접 해봐야 하므로, 실험 도구로 메모장을 선택하겠다.  원래 우리가 짰던 스크립트는 Send, Hello World 라고 할 때, 이 명령어를 비활성 명령어로 만들어보자.

사진 12-2-2

위 사진과 같이 클래스는 Window Spy로 알아낼 수 있다. 좌표를 찾듯이 찾아주면 되는데, 사진에서 밝게 표시한 곳이 ClassNN이다. 즉, 컨트롤의 이름이다. 메모장의 입력창 위치에 마우스를 대면 ClassNN이 Edit1로 표시된다. 메모장의 입력창 ClassNN 바로 Edit1 것이다! 이렇게 여러 프로그램들의 ClassNN을 심심할 때마다 찾아보는 것도 재미있다.  PC 카카오톡 대화 입력 창만해도 RichEdit20W1이라는 아주 긴 ClassNN를 갖고 있다. 그러므로, 아래 스크립트는 다음과 같이 변한다

/* Send, Hello World 이 문장은 아래 문장처럼 변할 수 있음 */ ControlSend, Edit1, Hello World

하지만 우리에겐 타이틀명이란 것도 필요하다위에서 택배 보내기 예제가 나왔는데,  만약 받는 주소에 "데브실님 "이라고만 써져있으면 택배를 보낼  있을 리가 없다전국에 데브실이라는 이름이 어디 있을  알고 이렇게만 적는가? "어디 사는 누구"라고 정확히 적어야 한다그래서  "어디 사는" 적어주려고 한다"어디 사는" 타이틀이라고 한다.

컴퓨터 세계에서 이것은 "어느 타이틀에 사는 컨트롤" 바꿀  있다역시 Window Spy에서 알아낼  있지만, Spy 최상단에 써져있으므로 사진은 생략한다미국은 한국어랑 어법이 반대라고 했던가컴퓨터는 서양 물건이므로 순서도 "주소에 사는 받는사람씨" 아닌 "받는 사람 주소에 사는"으로 적어야 한다 클래스가 타이틀이 뒤로 와야 한다.

Controlsend, Edit1, Hello World, 제목 없음 - 메모장 ;[제목 없음 - 메모장] 동네에 사는 [Edit1]씨에게 Hello World를 보내라!

재생 가능 시간이 만료되었습니다.
페이지 새로고침 후 다시 실행해 주시기 바랍니다.

  

동영상 12-2-1 (15MB)

좌측은 메모장, 우측은 SciTE를 연 후 실험했다. 활성화된 창은 분명 SciTE임에도 불구하고, 메모장에 정상적으로 문자를 보내고 있다. 덤으로 {Enter}와 같은 키도 잘 보내진다.

만약 받는 사람이 없으면 집주소로만, 즉 타이틀로만 보낼 수도 있다. 클래스가 없는 경우에는 타이틀로만 보낼 수가 있는데, 다음과 같이 쓸 수 있다.

ControlSend,, Hello World, 제목없음 - 메모장

쉼표 2 찍은 것은 오타가 아니다원래   개의 쉼표 사이에 클래스가 들어가야 하지만클래스를 비워준 것일 뿐이다.
요약
- Controlsend,컨트롤명,보낼 내용,타이틀
컨트롤명과 타이틀은 Window Spy에서 구할  있다.
타이틀   띄어쓰기 구분
포함관계타이틀 > 컨트롤 >= ClassNN(클래스)







'AUTOHOTKEY' 카테고리의 다른 글

iPad 에서도 구동이 가능하다!  (0) 2019.02.22
ControlSend 와 Nox에 관한 고찰  (0) 2019.02.22
IniRead, IniWrite, IniDelete  (0) 2019.02.20
Line number in listbox  (0) 2019.02.20
ControlGet 에 관한 고찰  (0) 2019.02.20
GetText from ListBox  (0) 2019.02.20
블로그 이미지

remoted

Remoted's IT LAB & POST DATABASE

댓글을 달아 주세요