NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 5
  • 매뉴얼

    NGM 5의 매뉴얼입니다.

    NGM 5

    NGM 5의 매뉴얼입니다.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    커스텀 [2부] 커스텀 액션 만들기. (광클릭 마우스)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다.  갑자기 비가 오네요. 이제 장마가 시작되나 봅니다. 20년 전에는 6월에 장마였는데... 지금은 7월이 돼서야 시작되는군요.

     

    오늘은 [ 1부 ]에 이어 광클릭 액션을 좀 더 NGM스럽게(?) 만들어 보도록 하겠습니다. 이전 시간에는 단순히 광클릭 횟수만 입력할 수 있도록 했는데요. 이전 글을 참고하여 만든 액션에 설명이나 마우스 트랙킹 기능 등등을 더 넣어보도록 하겠습니다. 아주 쉽게 따라 할 수 있도록 만들고 있으니 한 번씩 해보시면 좋을 거 같네요~

     

    이전 시간에 만든 프로젝트를 실행하세요. 솔루션 폴더 안에 아래 그림처럼 CustomAction.sln 파일이 있습니다. Visual Studio에서 sln 확장자는 솔루션 파일이며, csproj 확장자는 C# 프로젝트를 의미합니다. 물론, C나 C++은 솔루션은 같지만 프로젝트 확장자는 다릅니다.

    img.png

     

     

    아래 그림처럼 저번 시간에 만든 프로젝트가 열리죠?

    img.png

     

     

    ClickCount 속성에 도움말을 추가하고, 한글 이름으로 보여질 수 있도록 해보겠습니다. 지금은 속성명이 그대로 보이니까요~

     

    속성과 특성에 대해...

    이제부터 자주 보일 속성(Property)과 특성(Attribute)에 대해 잠깐 알아보고 넘어가겠습니다. 프로그래밍을 하다 보면 자주 접하게 되는 단어들입니다. 먼저 속성은 어떤 사물 또는 내가 보고 있는 대상이 가지고 있는 고유한 성질을 말합니다. 예를 들어서 자동차는 바퀴 4개, 사이드 미러 2개, 엔진 등등이 속성에 해당됩니다. 사람도 머리, 몸통, 팔, 다리 등등... 속성을 가지고 있습니다.

     

    특성은 사물 또는 대상이 가지는 특별한 성질을 말합니다. 예를 들어서 똑같은 사람이지만~ 남자와 여자는 같은 속성(머리, 몸통, 팔, 다리)을 지니고 있지만 고유한 특성도 가지고 있습니다. 예를 들어서 남자는 여자보다 하나 더... 음... 그렇습니다. 같은 사람이지만 구분 짖는 어떤 특별한 성질을 나타내죠. 남자라는 대상으로 한정해볼까요? 이렇게 되면 고유한 특성이 사라지게 됩니다. 뭐 이외에도 특성은 많죠.

     

    사전 설명 내용이 좀 길어졌는데요. 우리가 만든 광클릭 액션의 코드는 읽기 전용 속성 2개(DisplayCategory, DisplayName)와 읽기 쓰기 속성 1개(ClickCount), 그리고 Execute라는 void(반환 값이 없는) 메서드가 하나 있습니다. 그리고, 이 클래스는 시리얼라이즈(직렬화)가 된다는 특성(9라인)이 클래스에 붙어있죠.

    MouseCrazyClickModel.cs

    img.png 

     

     

    지금 당장은 용어들이 생소하고 어렵게 느껴질 수도 있습니다. 하지만, 이 매뉴얼을 계속 진행하면서 보게 될 내용들이기 때문에 중간중간 관련 용어들을 이해하기 쉽게(?) 풀어서 알려드리도록 하겠습니다. 이제 막 시작하는 단계이니 욕심보다는 하나하나 따라 하면서 개발 툴과 언어랑 친해지는 게 중요합니다.

     

    아래 그림처럼 ClickCount 속성 위에 [DisplayName] 을 입력하세요. 그러면 빨간 밑줄이 생길 겁니다. 마우스를 가져가 보면 에러 내용을 확인할 수 있고, 팝업 해보면 이 에러에 대한 솔루션(해결책)을 표시해줍니다. 첫 번째에 있는 "using System.ComponentModel;"을 선택하세요. DisplayName이라는 특성은 System.ComponentModel.dll에 정의되어 있으니 해당 어셈블리(모듈 또는 라이브러리)를 참조해서 사용하라는 뜻입니다.

    img.png
     

     

    바로 밑에는 [Description] 특성을 추가해줍니다. 위에서 어셈블리를 이미 추가했기 때문에 이 특성은 별도 처리가 필요 없습니다.

    img.png

     

     

    그리고 클래스의 시리얼라이즈(Serializable) 특성 밑에 디스크립션(Description)도 추가합니다. 여기까지의 전체 코드는 아래와 같습니다.

    MouseCrazyClickModel.cs

    img.png 

     

     

    이전 글을 참고해서 내 프로젝트를 빌드(컴파일) 한 후 NGM에서 확인해볼까요?

    img.png

     

     

    NGM을 실행한 후 메뉴의 ①관리자를 클릭하고 ②도구 모듈 설치를 클릭하세요.

    img.png

     

     

    아래 그림처럼 ①CustomAction.dll을 선택한 후 ②열기 하세요.

    img.png

     

     

    아마 여러분도 아래와 같은 메시지가 표시되면서 내가 만든 어셈블리를 추가할 수 없을 겁니다. 이런 경고 메시지가 표시되는 이유는 최신 버전의 모듈을 사용하고 있었는데~ 실수로 이전 버전의 모듈을 불러올 경우 덮어쓰기가 되기 때문입니다. 무언가 개선이 되어 최신 버전을 이용하는 건데 이전 버전이 덮어쓰기 돼서 최신 버전이 사라지면 문제가 되겠죠?

    img.png

     

     

    그래서, 내 모듈의 버전을 높여서 배포(빌드 또는 컴파일해서 내보내는 것) 해야 합니다. 아래 그림을 참고해서 AssemblyInfo.cs 파일의 버전을 변경해야 합니다. 프로젝트 밑에 Properties를 확장하면 안에 파일이 있습니다.

    1. AssemblyInfo.cs 파일을 더블 클릭하세요.
    2. 어셈블리 및 파일 버전을 1.0.0.1로 변경하고 저장하세요. (Ctrl+S)
    img.png

     

     

    다시 빌드(컴파일) 하세요.

    img.png

     

     

    NGM을 실행한 후 메뉴의 ①관리자를 클릭하고 ②도구 모듈 설치를 클릭하세요.

    img.png

     

     

    버전을 올린 후 빌드하고 다시 추가하면 정상적으로 올라갑니다.

    1. CustomAction.dll 선택
    2. 열기 클릭
    img.png

     

     

    아래 그림을 보면 개선한 내용들이 전부 반영된 것을 확인할 수 있습니다.

    1. 사용자 도구의 하단에 액션 설명
    2. 속성의 이름
    3. 속성의 설명
    img.png

     

     

    코드에서 추가한 부분들이 NGM에서 어떻게 반영되었는지 비교하면서 확인해 보세요.

    1. 사용자 도구의 하단에 설명글 표시
    2. 속성의 이름 설정
    3. 속성의 설명 설정
    img.png

     

     

    이제 NGM에서 제공하는 유틸리티를 이용해서 마우스 좌표도 추가해보겠습니다. 좌표를 추가하려면 System.Drawing.dll이 필요합니다. 아래와 같이 ①참조에서 우클릭하고 참조 추가를 클릭하세요. 참조 관리자에서 ②System.Drawing을 체크하고, ③확인을 눌러 작업을 완료하세요.

    img.png

     

     

    아래와 같이 코드를 변경합니다. 23라인에 코드가 추가되었고, Point Type을 사용하기 위해 4라인에 using System.Drawing; 추가되었습니다.

    MouseCrazyClickModel.cs

    img.png 

     

     

    여기서 빌드하고 다시 NGM에 넣어보면 좌표값을 입력할 수 있는 속성이 하나 더 생긴 것을 확인할 수 있습니다. 하지만, 마우스가 트래킹(추적)되거나 하지는 않습니다. 좀 더 사용자 친화적으로 만들려면 23라인처럼 한 줄을 더 추가해야 합니다.

    img.png 

     

     

    23라인에 추가한 코드는 NGM Framework에서 제공하는 마우스 트래킹 특성입니다. 마우스의 위치를 추적해서 값을 얻어올 때 사용됩니다. 이제 버전을 1.0.0.2로 변경하고 컴파일하세요. 그리고, NGM에 도구 모듈 설치를 이용해서 추가합니다. 이전 매뉴얼들을 참고하여 새로운 스크립트를 추가하고 아래와 같이 광클릭 마우스를 추가하세요.

    1. 사용자 도구 탭의 광클릭 마우스 클릭
    2. 스크립트 에디터에 드래그 앤 드롭으로 추가
    img.png

     

     

    추가한 마우스 트래킹이 정상 동작하는 걸 알 수 있습니다. NGM Framework에서 제공하는 수많은 기능을 이용하면 좀 더 쉽고 빠르게 내가 원하는 액션을 만들어서 사용할 수 있습니다.

    gif 이미지는 클릭해서 보세요.

    img.gif

     

     

    이제 마지막으로 사용자가 설정한 좌표로 마우스가 이동되고 광클릭되도록 코드를 수정해보겠습니다. 전체 코드는 아래와 같고, 추가한 코드의 위치는 28라인입니다. 내용을 보면 NGM의 마우스 유틸리티를 이용해서 마우스 포지션(Position)을 사용자가 설정한 MouseLocation으로 설정해주는 것을 알 수 있습니다.

    MouseCrazyClickModel.cs

    img.png 

     

     

    이제 스크린숏 없이 말로 하겠습니다-_-; 버전을 1.0.0.3으로 변경한 후 빌드하세요. 그리고 NGM에서 라이브러리(모듈)를 추가합니다. 아래 영상을 참고하여 스크립트에 광클릭 액션을 추가하고 속성을 설정하세요. 실행하면 마우스가 좌표로 이동되고 100번 클릭하게 됩니다. 엄청나게 빠른 속도로 말이죠^^;

    gif 이미지는 클릭해서 보세요.

    img.gif

     

     

    여기까지 해서 아주 간단하게 광클릭 액션을 만들어봤습니다. 어떤가요? 실제로 같이 나만의 액션을 만들어서 사용해본 소감이요~ 그렇게 어렵거나 힘들지는 않죠? 아마 대부분은 잘 따라 하셨을 거라 생각합니다. 혹시라도 막히거나 잘 안 되는 부분이 있으면 댓글로 남겨주세요~

     

    개발자에게 후원하기

    img.jpg
    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.