NGMsoftware

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

    NGM 5의 매뉴얼입니다.

    NGM 5

    NGM 5의 매뉴얼입니다.

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

    커스텀 [1부] Ctrl+C, V 키보드 액션 만들기. (복사, 붙여넣기 한방에 처리하기)

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 이전 시간에 배운 광클릭 액션은 잘 동작 하나요? 직접 이것저것 내용을 좀 더 추가해보고, 연습하다 보면 어느 순간~ 이해되는 때가 올 겁니다. 저도 그랬거든요. 개발은 비탈길처럼 완만하게 실력이 늘지 않습니다. 계단처럼 한 단계 한 단계 늘거든요. 어떤 의문에 대해 이해가 되는 순간이 오면 갑자기 실력이 팍 늘어요^^

     

    실력 향상은~!!! 결국 시간을 얼마나 투자했는지와 반복 학습을 통해 어떻게하면 내가 만든 코드들을 재사용할 것인가를 고민하는 것입니다. 작은 것을 만들더라도 구조적으로 만들려는 고민이 있다면 좋은 개발자가 될 거라고 생각합니다. 유연하고 복잡도가 낮은 개발 방법이 최고라고 생각하거든요~

    img.jpg

     

     

     

    개발을 접해보지 않은 분들을 대상으로 글을 적다보니 속도가 더디네요^^; 이게 조회수를 보면 굳이 보지도 않는 글을 이렇게까지 적어야 하나 싶기도 하고... 돈 받고 한 시간 알려주는 게 더 편하긴 한데 말이죠. 헛소리는 이쯤 하고 오늘은 Ctrl+C를 한 번에 처리할 수 있는 액션을 만들겠습니다. 이전에 만든 CustomAction 프로젝트를 실행하세요.

    img.png

     

     

     

    Ctrl+C(복사하기)를 수행할 새로운 클래스를 추가합니다. CustomAction 프로젝트에서 우클릭하고 추가 > 클래스를 선택하세요.

    img.png

     

     

     

    아래 그림을 참고해서 CtrlCModel.cs 클래스 파일을 추가하세요.

    1. 클래스 선택
    2. CtrlCModel.cs 이름 설정
    3. 추가 클릭
    img.png

     

     

     

    아래와 같이 새로운 클래스가 추가되었습니다. 이제 기본 코딩을 작성해야겠죠? 이전 시간에 이미 참조 추가(NGM.dll, NGM.Models.dll, NGM.Models.Interface.dll)와 기타 설정들을 마무리 했기 때문에 NGM Interface 라이브러리에 있는 추상 클래스를 상속받을 수 있습니다.

    img.gif

     

     

     

    간단하게~ 코딩해보면 아래와 같습니다.

    CtrlCModel.cs

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace CustomAction
    {
        [Serializable]
        public class CtrlCModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory { get { return "NGM Exemple"; } }
     
            public override string DisplayName { get { return "복사하기"; } }
     
            public override void Execute()
            {
                NGM.Utility.MouseKeyboardManager
                    .KeyboardSimulator.KeyDown(System.Windows.Forms.Keys.LControlKey);
                NGM.Utility.MouseKeyboardManager
                    .KeyboardSimulator.KeyDown(System.Windows.Forms.Keys.C);
                NGM.Utility.MouseKeyboardManager
                    .KeyboardSimulator.KeyUp(System.Windows.Forms.Keys.C);
                NGM.Utility.MouseKeyboardManager
                    .KeyboardSimulator.KeyUp(System.Windows.Forms.Keys.LControlKey);
            }
        }
    }
     
    cs

     

     

    간략하게만 설명하고 넘어간 시리얼라이즈(Serialize, 직렬화)와 디시리얼라이즈(Deserialize, 역직렬화)에 대해 알아볼까요? 클래스를 만들 때마다 클래스 위에 Serializable 특성을 붙이고 있습니다. 위 코드에서 9라인처럼요. 직렬화는 객체 상태 그대로 전송하거나 저장하기 위해 사용합니다. 반대로 역직렬화는 전송받은 바이너리 또는 텍스트를 객체로 복구할 때 사용합니다. 

    img.png

     

     

     

    위 그림에서 보듯이 내가 만든 스크립트를 파일로 저장하고 불러오면 다시 스크립트로 복구가 된다는 뜻입니다. 적절한 예는 아니지만, 이렇게 이해하고 넘어가도 될 거 같네요. 아무튼 스크립트에 우리가 만든 광클릭 액션이나 복사하기 액션들이 NGM에서 저장할 때 직렬화하여 저장하고, 스크립트를 불러오면 원래 상태로 복구된다는 것만 이해하면 됩니다. 사실 파일로 풀어서 상태를 모두 기록하고 상태를 해석하면서 클래스를 수동으로 복구할 수도 있습니다^^; 그리고, 복잡한 클래스를 바이트 스트림으로 직렬화(바이트를 줄 세우는...)하고, 역직렬화(클래스 구조화...)하는 게 관리 측면에서 더 쉽습니다. 복잡한 관계에서는 말이죠~

     

    이것으로 심플하게 Ctrl+C(복사하기) 기능을 처리하는 액션을 만들었습니다. 생각보다 쉽죠? 조금만 더 다듬고 기능을 추가하면 내가 원하는 건 뭐든지 만들 수 있게 됩니다. 아직 툴과 언어가 어색해서 어렵게 느껴지겠지만 말이죠. 이제 버전을 1.0.0.5로 올리고, 빌드(컴파일)하세요.

    1. AssemblyInfo.cs 파일 더블 클릭
    2. 어셈블리와 파일 버전을 1.0.0.5로 변경
    img.png

     

     

     

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

    img.png

     

     

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

    img.png

     

     

    아래 그림처럼 광클릭 마우스와 복사하기 액션이 보입니다. 액션을 추가하고 실행하면 어떤 결과도 눈으로 확인되지 않습니다. Ctrl+C만으로는 뭔가 보이는 게 없기 때문이죠. 그래서, 테스트를 위해 내용을 좀 더 추가해야 합니다.

    img.png

     

     

     

    시작 전 지연을 3000 입력하세요.

    img.png

     

     

     

    메모장을 열고 "Hello~"를 적어 넣습니다. 그리고 전체 선택해서 복사해두세요. 그리고 "Hello~"를 지웁니다. 이번에는 "안녕하세요~"를 입력하세요. 이제 스크립트를 실행하고, 메모장에 있는 "안녕하세요~"를 전체 선택합니다. 이때 3초 안에 해야 합니다. 스크립트가 완료된 후 메모장에 붙여 넣기 해보면 "Hello~"가 아닌 "안녕하세요~"가 붙여넣기 되는 것을 알 수 있습니다. 이 의미는 좀 전에 전체 선택한 상태에서 Ctrl+C 액션이 동작되었다는 뜻입니다. 오늘은 여기까지만 하고 2부에서 자동 전체 선택(Ctrl+A) 기능을 추가해 보도록 하겠습니다~

     

    개발자에게 후원하기

    img.jpg

     

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해 줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.