NGM매크로

해당 강좌의 수강 대상자는 NGM매크로를 처음 접해보시는 모든 분들을 대상으로 합니다.
해당 강좌를 통해 초보자 분들이 그때 그때 찾아서 바로 참고 할 수 있는 참고서가 되었으면 합니다.
NGM매크로를 이용하여 무언가를 만드시려는 초보분들은 해당 강좌를 꼭 상시로 참고학습 해보세요.


▲ 위 배너를 통해 회원가입 후 프로그램을 이용하실 수 있습니다.

조회 수 329 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

안녕하세요. 소심비형입니다. NGM 사용자분 중에 동적 컨트롤을 어떻게 핸들링해야 하는지 질문한 내용이 있어서 팁을 작성하게 되었습니다. 우선, 장황하게 설명은 했지만 개발자가 아니라면 이해하기 어려운 내용이기에 좀 더 풀어서 설명하고 예제를 만들어 보도록 하겠습니다.

 

 

 

윈도우는 정적인 컨트롤과 동적인 컨트롤로 구분됩니다. 쉽게 예를 들어보면 이렇습니다. 지금 이 글을 읽고 있는 웹브라우저(크롬, 사파리, 파이어폭스, 익스플로러 등등...)는 페이지가 탭으로 구성되어 있죠? 네 그렇습니다. 지금 이 글은 어떤 탭에 속해있다는 걸 알 수 있습니다. 그렇다면 크롬에서 새 탭을 추가하는 + 버튼을 눌러보면 빈 탭이 추가됩니다. 이 글을 보고 있는 탭은 정적인 컨트롤입니다. 현재 시점에서 + 버튼을 눌러서 새 탭을 추가하기 전까지는 어떤 것도 존재하지 않죠? 하지만 + 버튼을 눌러서 탭을 추가하면 새로운 페이지가 열린다는 건 모두가 알고 있습니다. 이렇듯 어떤 게 보일지 알지만 실체는 없는 컨트롤들을 전부 동적 컨트롤이라고 부릅니다.

 

 

 

 

개념이 어려운가요^^? 용어가 정적(Static)과 동적(Dynamic)이라고 부르긴 하지만 좀 더 근본적으로 접근해보면 정적은 변화하지 않는 또는 불변성과 같은 의미를 가지고 있습니다. 전통적인 프로그래밍에서 보면 어떤 객체가 메모리에 로드되면 그 주소는 변화하지 않는다는 의미로 사용됩니다. 개발자들은 이미 알고 있겠지만... Static 키워드가 붙어 있는 변수(참조 객체를 포함한)들은 응용프로그램이 종료되어 메모리가 해제될 때까지 유지되는 것을 알 수 있습니다.

 

 

 

동적은 정적의 반대말입니다. 정적이 고정되어 있다는 의미이므로 동적은 고정되지 않은 또는 역동적인 뜻을 가집니다. 우리가 흔히 보고 사용하는 DLL(Dynamic Link Library)이 대표적이죠. 동적은 어떤 명세를 나타냅니다. 추상적이든 구상적이든 말이죠. 한가지 더 집고 넘어가면 추상적이란 뜻은 사람, 개, 고양이, 자동차, 남자, 여자와 같은 것들입니다. 구상적인 것은 뭘까요? 실제로 존재하는 것들을 말합니다. 사람은 추상적이지만 빌 게이츠나 스티븐 잡스는 구상적이죠. 차이점을 아시겠죠?

 

 

 

자 이제 정리해보면 정적은 메모리에 주소가 있다는 뜻입니다. 그렇기 때문에 주소로 추적이 가능하죠. 반면에 동적은 주소가 언제 생길지 모르겠지만~ 그전까지는 추적이 불가능합니다. 동적인 컨트롤이 정적인 영역으로 넘어와야만 추적이 가능하다는 뜻입니다. 그래서 정적인 컨트롤은 현실 세계에서 추적하여 잡아낼 수 있지만, 동적인 컨트롤들은 어떤 알 수 없는 행위의 시점(이벤트)부터 추적이 가능하게 되는 겁니다.

 

 

이제 예제를 통해 어떻게 사용해야 하고, 동적인 컨트롤들을 어떻게 추적해야 하는지 알아보도록 하겠습니다. 현재까지 나와있는 매크로 중에 동적 컨트롤을 추적해서 핸들링할 수 있는 매크로는 NGM이 유일합니다^^; 그 이유는 미래에 언제 생길지 모르는 컨트롤일지라도 어디에 나타나는지 알면 추적이 가능합니다. 주소로 찾는 게 아니라 어디에 나타날지 알기 때문에 추적하여 잡을 수 있게 되는 원리입니다. 여기서 한 가지 의문이 듭니다. 어디에 나타날지 않다는 건 주소를 아는 거 아닌가라고 말이죠. 프로그래밍의 세계에서는(사실은 윈도우라는 플랫폼) 주소는 메모리의 주소를 나타냅니다. 그리고 NGM은 메모리 주소가 아닌 컨트롤의 구조를 파악해서 미래에 나타날 위치를 기반으로 메모리 주소를 찾아가는 방식입니다. 복잡해 보이지만, 예제를 한번 따라 해 보면 쉽게 이해할 수 있을 겁니다.

 

 

 

 

준비물은 NGM과 카카오톡입니다. 아래와 같이 새로운 스크립트를 추가하세요. 그리고 핸들 추가와 이미지 서치 액션을 추가해줍니다. 아래 그림은 핸들 추가가 선택되어 있는데요. 이미지 서치를 클릭하여 선택해두세요.

 

 

적당한 이미지를 선택하고 Ctrl+C를 눌러서 클립보드에 저장하세요. 그리고, ①붙여 넣기(Ctrl+V)하면 "클립보드 이미지 전송"창이 표시됩니다. 여기서 Ctrl+Print Screen을 눌러서 NGM의 캡처 모드로 들어갑니다. ②전송 버튼을 적당하게 캡처하여 저장하세요.

 

 

아래 그림과 같이 창 핸들을 추가하세요. ①핸들 추가를 선택하세요. ②컨트롤 찾기를 클릭하고, ③붙여 넣기(Ctrl+V)를 수행합니다. ④"클립보드 이미지 전송"창으로 마우스를 이동한 후 F1을 눌러서 핸들을 추가하세요. 

 

 

테스트를 위해 아래와 같이 설정하세요. 핸들 추가의 ①실행 전 지연에 3,000을 입력합니다. ②스크립트를 실행하고, ③붙여넣기(Ctrl+V)를 수행합니다. ④로그 내용을 확인해보세요. 

 

 

 

생각과는 다른 결과가 나와서 놀라고 있을지도 모르겠습니다. 분명 핸들도 있고 컨트롤도 있는데 이미지를 가져오지 못한 걸 알 수 있죠. 이는 동적으로 생성되는 위치가 사실과 다르기 때문입니다. 그래서 실체화된 후 실행되어도 이미지를 찾을 수 없게 됩니다.

 

 

이번에는 정상적으로 동작하게 만들어보죠. 핸들 추가에서 컨트롤 찾기를 누른 후 카카오톡 대화방을 선택하세요. 아래 그림처럼 전체를 선택해야 합니다.

 

 

아래 그림을 참고해서 팝업을 하나 추가해주세요. 카카오톡의 클립보드 이미지 전송창은 팝업창이더라고요^^; ①컨트롤 위치를 클릭하고, ②추가를 누릅니다. ③노드를 Popup으로 선택하고 ④확인 버튼을 누르세요.

 

 

테스트를 위해 ①시작 버튼을 클릭하세요. ②붙여 넣기 하세요. ③이번에는 이미지가 정상적으로 찾아진 걸 확인할 수 있습니다.

 

 

설명이 복잡하고 어려운 용어들이 사용되어 거부감이(?) 느껴질 수도 있습니다. 하지만, 알고 보면 그렇게 어렵지 않은 작업입니다. 윈도우의 모든 프로그램은 구조적이며 어느 정도 예측 가능합니다. 그렇기에 특별한(?) 프로그램을 사용하지 않더라도 카카오톡이나 웹브라우저처럼 간단한 프로그램들은 얼마든지 제어가 가능합니다. 물론, 복잡도가 높아질수록 이것 저것 신경써야 할것들이 많아지긴 하지만요. 결국 매크로는 노력과 시간을 많이 투자해야 좋은 제품이 나오기 마련입니다. 하지만... 어느정도 경지에 오르면 또 금방 싫증 나는 작업이기도 하죠^^;

?

List of Articles
번호 제목 글쓴이 날짜 조회 수
117 머신러닝 이미지 맞추기~ 소심비형 2020.04.02 152
116 NGM 매크로 - 텐서플로우 머신러닝 기능 추가. 소심비형 2020.03.28 144
115 머신러닝(기계학습)을 매크로에 적용시켜보기. 소심비형 2020.03.26 151
114 색상이 변화하면서 움직이는 이미지 찾는 방법. 소심비형 2020.03.20 132
113 스크립트 에디터의 소스 모드에서 인텔리센스 사용하는 방법. 소심비형 2020.03.13 42
112 5.1.1.7에서 스크립트 디버깅툴이 추가되었습니다. 소심비형 2020.03.11 49
111 텍스트 에디터 기능이 추가되었습니다. 소심비형 2020.03.09 39
110 하드웨어 엔지엠 매크로 소개. 소심비형 2020.03.07 300
109 장비 없이 하드웨어 매크로 만들기 (Class DD) 3 소심비형 2020.03.03 440
108 엔지엠 매크로 에디터와 플레이어 무료 배포합니다. (포인트로 사용할 수 있습니다^^) 1 소심비형 2020.02.29 256
107 다수의 컴퓨터에 스크립트를 쉽게 배포 관리하는 방법. 소심비형 2020.02.23 115
106 [NGM 이미지 서치] 찾은 모든 이미지를 한번에 클릭하는 방법. 1 소심비형 2020.02.22 188
105 통합 매뉴얼 페이지가 오픈되었습니다. 1 소심비형 2020.02.17 96
104 NGM 매크로 무료화 공유합니다~ (광고포함) 6 소심비형 2020.02.08 946
» 비활성으로 동적 컨트롤 제어하는 매크로 만들기. 소심비형 2020.01.24 329
102 NGM Designer - 스크립트 아웃풋 내용 출력하는 방법. (Display of output message) 소심비형 2020.01.21 104
101 NGM Designer - 관리자 권한으로 프로그램 실행하기. 소심비형 2020.01.21 101
100 NGM Designer - 비주얼 스튜디오에 NGM Designer 설치하기. 소심비형 2019.12.20 252
99 나만의 매크로 만들기 - NGM 디자이너 삭제하기. 소심비형 2019.12.20 231
98 나만의 매크로 만들기 - Custom GUI 개발하기 위한 사전 준비. (NGM 디자이너 설치하기) 소심비형 2019.12.20 309
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6