커스텀 [1부] Ctrl+C, V 키보드 액션 만들기. (복사, 붙여넣기 한방에 처리하기)
페이지 정보
본문
안녕하세요. 소심비형입니다. 이전 시간에 배운 광클릭 액션은 잘 동작 하나요? 직접 이것저것 내용을 좀 더 추가해보고, 연습하다 보면 어느 순간~ 이해되는 때가 올 겁니다. 저도 그랬거든요. 개발은 비탈길처럼 완만하게 실력이 늘지 않습니다. 계단처럼 한 단계 한 단계 늘거든요. 어떤 의문에 대해 이해가 되는 순간이 오면 갑자기 실력이 팍 늘어요^^
실력 향상은~!!! 결국 시간을 얼마나 투자했는지와 반복 학습을 통해 어떻게하면 내가 만든 코드들을 재사용할 것인가를 고민하는 것입니다. 작은 것을 만들더라도 구조적으로 만들려는 고민이 있다면 좋은 개발자가 될 거라고 생각합니다. 유연하고 복잡도가 낮은 개발 방법이 최고라고 생각하거든요~
개발을 접해보지 않은 분들을 대상으로 글을 적다보니 속도가 더디네요^^; 이게 조회수를 보면 굳이 보지도 않는 글을 이렇게까지 적어야 하나 싶기도 하고... 돈 받고 한 시간 알려주는 게 더 편하긴 한데 말이죠. 헛소리는 이쯤 하고 오늘은 Ctrl+C를 한 번에 처리할 수 있는 액션을 만들겠습니다. 이전에 만든 CustomAction 프로젝트를 실행하세요.
Ctrl+C(복사하기)를 수행할 새로운 클래스를 추가합니다. CustomAction 프로젝트에서 우클릭하고 추가 > 클래스를 선택하세요.
아래 그림을 참고해서 CtrlCModel.cs 클래스 파일을 추가하세요.
- 클래스 선택
- CtrlCModel.cs 이름 설정
- 추가 클릭
아래와 같이 새로운 클래스가 추가되었습니다. 이제 기본 코딩을 작성해야겠죠? 이전 시간에 이미 참조 추가(NGM.dll, NGM.Models.dll, NGM.Models.Interface.dll)와 기타 설정들을 마무리 했기 때문에 NGM Interface 라이브러리에 있는 추상 클래스를 상속받을 수 있습니다.
간단하게~ 코딩해보면 아래와 같습니다.
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라인처럼요. 직렬화는 객체 상태 그대로 전송하거나 저장하기 위해 사용합니다. 반대로 역직렬화는 전송받은 바이너리 또는 텍스트를 객체로 복구할 때 사용합니다.
위 그림에서 보듯이 내가 만든 스크립트를 파일로 저장하고 불러오면 다시 스크립트로 복구가 된다는 뜻입니다. 적절한 예는 아니지만, 이렇게 이해하고 넘어가도 될 거 같네요. 아무튼 스크립트에 우리가 만든 광클릭 액션이나 복사하기 액션들이 NGM에서 저장할 때 직렬화하여 저장하고, 스크립트를 불러오면 원래 상태로 복구된다는 것만 이해하면 됩니다. 사실 파일로 풀어서 상태를 모두 기록하고 상태를 해석하면서 클래스를 수동으로 복구할 수도 있습니다^^; 그리고, 복잡한 클래스를 바이트 스트림으로 직렬화(바이트를 줄 세우는...)하고, 역직렬화(클래스 구조화...)하는 게 관리 측면에서 더 쉽습니다. 복잡한 관계에서는 말이죠~
이것으로 심플하게 Ctrl+C(복사하기) 기능을 처리하는 액션을 만들었습니다. 생각보다 쉽죠? 조금만 더 다듬고 기능을 추가하면 내가 원하는 건 뭐든지 만들 수 있게 됩니다. 아직 툴과 언어가 어색해서 어렵게 느껴지겠지만 말이죠. 이제 버전을 1.0.0.5로 올리고, 빌드(컴파일)하세요.
- AssemblyInfo.cs 파일 더블 클릭
- 어셈블리와 파일 버전을 1.0.0.5로 변경
NGM을 실행한 후 메뉴의 ①관리자를 클릭하고 ②도구 모듈 설치를 클릭하세요.
아래 그림처럼 ①CustomAction.dll을 선택한 후 ②열기 하세요.
아래 그림처럼 광클릭 마우스와 복사하기 액션이 보입니다. 액션을 추가하고 실행하면 어떤 결과도 눈으로 확인되지 않습니다. Ctrl+C만으로는 뭔가 보이는 게 없기 때문이죠. 그래서, 테스트를 위해 내용을 좀 더 추가해야 합니다.
시작 전 지연을 3000 입력하세요.
메모장을 열고 "Hello~"를 적어 넣습니다. 그리고 전체 선택해서 복사해두세요. 그리고 "Hello~"를 지웁니다. 이번에는 "안녕하세요~"를 입력하세요. 이제 스크립트를 실행하고, 메모장에 있는 "안녕하세요~"를 전체 선택합니다. 이때 3초 안에 해야 합니다. 스크립트가 완료된 후 메모장에 붙여 넣기 해보면 "Hello~"가 아닌 "안녕하세요~"가 붙여넣기 되는 것을 알 수 있습니다. 이 의미는 좀 전에 전체 선택한 상태에서 Ctrl+C 액션이 동작되었다는 뜻입니다. 오늘은 여기까지만 하고 2부에서 자동 전체 선택(Ctrl+A) 기능을 추가해 보도록 하겠습니다~
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해 줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
- 이전글[2부] Ctrl+C, V 키보드 액션 만들기. (복사, 붙여넣기 한방에 처리하기) 20.01.30
- 다음글[3부] 커스텀 액션 만들기. (광클릭 마우스) 20.01.29
댓글목록
등록된 댓글이 없습니다.