무료 게임 매크로 다운로드 받기 http://ngmsoftware.com
안녕하세요. 엔지엠소프트웨어입니다. 누구나 쉽게 이미지 체크, 이미지 서치, 이미지 매치를 이용한 매크로 프로그램을 만들 수 있도록 최대한 쉽고 간단하게 설명하도록 하겠습니다. 우선, 엔지엠 에디터 엔터프라이즈 라이센스가 있는 상태에서 커스텀 모듈을 개발할 수 있는 환경이 갖춰져 있어야 합니다. Visual Studio Community가 설치되어 있어야 하고, 관리자에게 요청해서 커스텀 모듈 개발 킷을 받으셔야 합니다. 또는 [ 여기 ]에서 커스텀 모듈을 다운로드 받아서 사용하셔도 됩니다. 자~ 이제 커스텀 모듈을 개발하기 위해 Visual Studio Community를 실행하세요. 새 솔루션 또는 프로젝트를 추가하세요. 이 프로젝트는 닷넷 프레임워크의 라이브러리입니다.
프로젝트 이름은 사용자가 임의로 만들어도 됩니다. 저는 직관적인 이름인 "CustomImageConditionModule"로 지었습니다. 위치는 원하는 곳을 지정하고, 프레임워크는 4.6.1 이상으로 선택하세요. 아래 그림에서는 "ChartToInt"로 되어 있지만, 무시하고 "CustomImageConditionModule"이라고 프로젝트 이름에 입력하세요.
아래 그림처럼 새로운 프로젝트가 생성 되었을겁니다. 여러분들은 아마도~ 아래 그림과는 다를겁니다. 제 경우에는 NGM의 제품 및 기타 개발중인 프로그램들이 모두 표시되어 있습니다. 이제 커스텀 모듈 개발 킷을 프로젝트의 참조에 추가 시켜야 합니다. 아래 동영상을 참고해서 참조에 추가하세요. 참고로, 바탕화면에 커스텀 모듈 개발 킷(3개)을 복사해두고 참조에 추가 했습니다.
혹시라도 모듈명과 클래스명을 네이밍룰에 맞게 작성하지 않았다면 아래 동영상을 참고해서 이름을 변경해줘야 합니다. 커스텀 모듈을 개발하려면 모듈명은 반드시 "Custom"으로 시작해야 합니다. 그리고, 클래스명은 "Model"로 끝나야 합니다. 클래스명은 "MultiImageCheckModel"로 변경하세요. 아래 동영상과는 다르지만, 이름을 변경하는 방법만 참고하시면 됩니다.
위에서도 언급했듯이 커스텀 모듈은 2가지 네이밍룰이 존재합니다. 프로젝트명은 Custom으로 시작해야 하고, 엔지엠 에디터에 액션으로 표시되는 클래스는 이름이 Model로 끝나야 합니다. 이는, 엔지엠 에디터가 수용할 수 있는 커스텀 모듈인지 체크하는 최소한의 안전 장치입니다. 이외에도 몇가지 더 존재하지만, 개발하는데 중요한 내용은 아니므로 자세한 설명은 건너뛰도록 하겠습니다. 프로젝트를 선택하고, 우클릭 후 속성을 클릭하세요.
어셈블리 이름을 "CustomImageConditionModule"로 변경 해주세요. 관리하기 위한 프로젝트 이름은 변경했지만, 실제 프로젝트가 컴파일되어 만들어지는 라이브러리 이름은 그대로입니다. 프로젝트명과 동일하게 Custom을 붙여주세요. 참고로, 프로젝트를 처음 새성할 때 이름을 제대로 만들었다면~ 이 부분은 안해도 되는 작업입니다.
이제 본격적으로 코딩을 해봅시다. 코딩은 MultiImageCheckModel.cs 클래스 파일에 작성합니다. 클래스를 더블 클릭하세요. 요즘~ 초딩 코딩 교육이 열풍이죠? 엔지엠 에디터와 비슷한 엔트리나 스크레치를 코딩 교육에 사용합니다. 우리 아이들도~ 엔트리로 코딩 교육을 하고 있습니다. 언젠가는 엔지엠 에디터도 사용하겠죠? 이처럼 블록을 쌓아서 코딩하는 방식이 가장 직관적이고 쉽다는걸 알 수 있습니다. 하지만, 커스텀 모듈은 개발자가 아니라면 혼자서 개발하기가 쉽지 않죠. 그래서~ Step by Step으로 작성된 메뉴얼을 보고, 직접 학습해야 합니다.
도구 상자에 표시되는 커스텀 액션을 만들기 위해서는 아래 그림과 같이 총 4개의 추상 클래스를 상속 받아야 합니다. BaseCustom은으로 시작하는 클래스는 커스텀 모듈을 개발하기 위한 추상 클래스를 말합니다. 뒤에 Condition이 붙으면 조건에 사용할 수 있는 액션이라는 뜻입니다. 마지막으로 Function과 Tool은 사용자 도구 상자에 표시할지 사용자 함수 상자에 표시할지 결정합니다. 관리 편의성을 위한 일종의 카테고리라고 생각하시면 됩니다. 아래 그림과 같이 첫번째 BaseCustomConditionFunctionModel을 상속 받으면 조건을 처리할 수 있는 커스텀 함수 액션을 만든다는 뜻입니다.
아래는 추상 클래스를 상속 받은 후 구현한 코드입니다.
using NGM.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CustomImageConditionModule
{
[Serializable]
public class MultiImageCheckModel : NGM.Models.Interface.BaseCustomConditionFunctionModel
{
public override string DisplayCategory => throw new NotImplementedException();
public override string DisplayName => throw new NotImplementedException();
public override bool? Execute(IMainView mainView, IPlayer player)
{
throw new NotImplementedException();
}
}
}
코딩은 아래 동영상을 참고하세요. 먼저 엔지엠 에디터에서 사용하는 모든 액션은 클래스에 Serializable(시리얼라이저블: 직렬화 가능) 특성을 부여해야 합니다. 직렬화와 역직렬화에 대해 궁금하신 분은 [ 여기 ]에서 자세한 설명을 볼 수 있습니다. 이 특성이 누락되면, 액션이 자신의 상태를 유지할 수 없게됩니다. 그리고, 접근 제한자(Access Modifier: 액세스 모디파이어) 또는 접근 한정자라고 부르는 public을 클래스명 앞에 붙여줘야 합니다. public(퍼블릭: 공공의)을 붙여주면 의미와 같이 누구나 이 클래스를 사용할 수 있게됩니다. 접근 제한자는 public, private, internal, protected, internal protected와 같이 5가지가 존재합니다. 개발자 교육이 아니라서 간단하게 이런것들이 있구나 정도로만 알고 넘어가시면 됩니다.
아래와 같이 속성을 처리 해줍니다. public new string TrueID 속성은 특이하게도 new 키워드가 붙어 있는걸 알 수 있습니다. 이는 추상 클래스에서 정의한 메소드 또는 속성과 같은 이름으로 정의할 수 있도록 해줍니다. 기본적으로 하나의 조건만을 처리할 수 있기 때문에 멀티 조건에서는 불필요한 속성이므로 [Browsable(false)] 특성을 부여해서 사용자가 핸들링하지 못하도록 한겁니다. 개발자가 아니라면 이해하기 어려운 개념일거에요. 사실 추상화라던가 일반화라는 개념 자체가 어렵거든요^^;
using System;
using System.ComponentModel;
using System.Drawing;
using System.IO;
namespace CustomFunctionConditionModule
{
[Serializable]
public class MultiImageCheckModel : NGM.Models.Interface.BaseCustomConditionFunctionModel
{
[Browsable(false)]
public new string TrueID { get; set; }
[Browsable(false)]
public new string FalseID { get; set; }
private string _imageName1;
private string _imageName2;
private string _imageName3;
private string _imageName4;
private string _imageName5;
/// <summary>
/// 도구 상자에 표시할 카테고리 이름입니다.
/// </summary>
public override string DisplayCategory { get { return "NGM 커스텀 컨디션 도구"; } }
/// <summary>
/// 도구 상자에 표시할 액션 이름입니다.
/// </summary>
public override string DisplayName { get { return "멀티 이미지 체크"; } }
원본 글 보기 http://ngmsoftware.com
'프로그래밍' 카테고리의 다른 글
화면 색 인식 알람 매크로 프로그램 만들기. (소리 알람, 화면 알람, 카카오톡 알람, 텔레그램 알람, 디스코드 알람) (0) | 2022.06.24 |
---|---|
엑셀 대량메일 발송 (0) | 2022.06.24 |
아두이노 매크로 (0) | 2022.06.24 |
매크로 화면 변화 인지 (0) | 2022.06.24 |
엔지엠 RPA 자동화 - 오피스 아웃룩 자동 이메일 매크로 (0) | 2021.09.18 |