NGMsoftware

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

    NGM 6

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

    커스텀 커스텀 모듈을 이용해서 매일 반복되는 액션 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 오늘은 커스텀 모듈을 이용해서 매일 반복되는 액션을 만들어 볼건데요. 이 액션은 엔지에 매크로의 [ 시작 시간 ] 또는 [ 예약 작업 이벤트 ]를 사용하면 쉽게 만들 수 있습니다. 하지만, 이 둘은 사용 방법이 복잡하고 서브 스크립트 방식으로 사용해야 하기 때문에 단순히 원하는 시간이 되었을 때 실행되도록 하려면 이 내용을 참고하시는게 좋을듯 합니다.

    ※ 커스텀 모듈을 개발하려면 아래 글을 참고해서 개발 환경을 미리 만들어야 합니다. 아래 총 4개의 글을 먼저 학습해야 합니다.

    커스텀 모듈 개발 환경 만들기 ]

    1부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

    [ 2부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

    [ 3부 - 커스텀 모듈로 이미지 서치 액션 만들기 ]

     

    비주얼 스튜디오를 실행하고, 기존 프로젝트를 열어주세요. 그리고, 새로운 클래스를 하나 추가 해줍니다.

    ※ 프로젝트에서 우클릭하고 "추가 > 클래스"를 클릭하세요.

    XT7b1Fl.jpg

     

     

    CustomPlayTimeModel.cs 이름으로 클래스를 하나 추가하세요.

    YVsVYpe.jpg

     

     

    클래스 이름 뒤에 ①NGM.Models.Interface.BaseCustomToolModel을 입력하세요. ②클래스 이름에 밑줄이 생깁니다. 마우스로 클릭해서 ③추상 클래스 구현을 클릭하세요.

    Zu2p8Xo.jpg

     

     

    아래와 같이 자동으로 코드가 완성됩니다.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomImageSearch
    {
        internal class CustomPlayTimeModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => throw new NotImplementedException();
    
            public override string DisplayName => throw new NotImplementedException();
    
            public override void Execute()
            {
                throw new NotImplementedException();
            }
        }
    }

     

    이 액션은 시간 관련된 액션이므로 카테고리를 "시간"으로 설정하고, 액션 이름은 "실행 시간"으로 설정하세요.

    namespace CustomImageSearch
    {
        internal class CustomPlayTimeModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => "시간";
    
            public override string DisplayName => "실행 시간";

     

    사용자가 설정한 시간에 동작하도록 해야 하기 때문에 사용자로부터 시간 값을 입력 받도록 해야 합니다. 아래와 같이 StartTime 속성을 하나 추가했습니다.

            public override string DisplayCategory => "시간";
    
            public override string DisplayName => "실행 시간";
    
            [Category("Action")]
            [DisplayName("실행 시간 설정")]
            [Description("시간은 00:00:00 과 같이 입력해야 합니다.")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string StartTime { get; set; }

     

    Execute 메소드에는 아래와 같이 코드를 작성할 수 있습니다. if 조건에서 사용자가 실행할 시간을 입력하지 않았으면 메세지를 표시하고, 액션을 종료합니다. 만약, 정상적으로 매크로 실행 시간을 입력했다면 현재 시간을 0.1초마다 비교하면서 계속 딜레이를 줍니다. 현재 시간이 사용자가 입력한 시간과 같아지면 이 스크립트는 완료되고, 다음 액션으로 이동합니다.

            public override void Execute()
            {
                if (string.IsNullOrEmpty(StartTime))
                {
                    MainView.WriteOutput("매크로가 실행될 시간을 시간을 입력하세요. 00:00:00과 같은 형식으로 입력해야 합니다.");
                    return;
                }
    
                while (DateTime.Now.ToString("HH:mm:ss") != StartTime)
                    System.Threading.Thread.Sleep(100);
            }

     

    전체 코드는 아래와 같습니다. 클래스 위에 [Serializable] 어노테이션을 꼭 붙여줘야 합니다. 클래스는 public으로 바꿔주세요.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CustomPlayTime
    {
        [Serializable]
        public class CustomPlayTimeModel : NGM.Models.Interface.BaseCustomToolModel
        {
            public override string DisplayCategory => "시간";
    
            public override string DisplayName => "실행 시간";
    
            [Category("Action")]
            [DisplayName("실행 시간 설정")]
            [Description("시간은 00:00:00 과 같이 입력해야 합니다.")]
            [Browsable(true)]
            [DefaultValue(null)]
            public string StartTime { get; set; }
    
            public override void Execute()
            {
                if (string.IsNullOrEmpty(StartTime))
                {
                    MainView.WriteOutput("매크로가 실행될 시간을 시간을 입력하세요. 00:00:00과 같은 형식으로 입력해야 합니다.");
                    return;
                }
    
                while (DateTime.Now.ToString("HH:mm:ss") != StartTime)
                    System.Threading.Thread.Sleep(100);
            }
        }
    }

     

    만들어진 커스텀 모듈을 빌드하고, 내문서 > NGM6 > ToolExtension 폴더에 배포하세요. 그리고 엔지엠 매크로 에디터를 실행하세요.

    ※ 프로젝트 이름이 다르면 라이브러리 이름도 다를 수 있습니다.

    SE76Q2l.jpg

     

     

    에디터에서 아래와 같이 스크립트를 작성하세요. 실행 시간 액션에 20:00:00으로 입력 했는데요. 오후 8시에 매크로가 실행되라는 뜻입니다.

    YExxn1f.jpg

     

     

    우리가 만든 커스텀 액션은 아래 위치에 있습니다. 좌측 하단의 ①사용자 도구 탭을 선택하세요. ②시간 카테고리 안에 있습니다.

    KSKqc7z.jpg

     

     

    매크로를 실행하면 오후 8시에 매크로가 실행됩니다. 매크로는 그전에 실행된 상태지만, 사용자가 설정한 시간과 현재 시간을 비교해서 다르면 계속 붙잡고 있어서 실행이 안됩니다. 하지만, 오후 8시가 되면 설정한 시간과 동일하기 때문에 while 반복기를 탈출하고 아래에 있는 클릭 액션이 실행됩니다. 여러분들은 설정한 시간에 매크로가 동작하게 하려면 클릭 액션을 삭제하고, 그 위치에 동작하고 싶은 스크립트를 작성하면 됩니다. 그리고, 마지막에 액션 이동으로 실행 시간 액션으로 루틴을 이동시켜야 합니다. 그래야 내일 같은 시간에 다시 동작합니다.

     

    여기에서 만든 커스텀 모듈은 아래 게시판에 첨부되어 있으니 다운로드 받아서 사용 해보세요^^

    [ 매일 같은 시간에 매크로를 실행 해주는 커스텀 모듈 다운로드 ]

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.