NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

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

    디자이너 10부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (이벤트와 커스텀 액션 처리하기)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 디자이너 기초 교육의 마지막이네요. 총 10부작으로 글을 작성했는데요. 디테일한 부분은 각자 학습하셔야 합니다. 디자이너로 매크로 플레이어를 제작하려면 아래 글들을 참고하여 개발 환경을 먼저 구성해야 합니다. 그리고, 아래 글의 내용을 참고하여 하나씩 따라해보세요.

    1부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기 ]

    2부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (이미지 매치) ]

    3부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (문자 판독 OCR 체크) ]

    4부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (프로세스와 프로그램 이름 변경하는 방법) ]

    5부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (아이콘 변경하는 방법) ]

    6부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (그룹 컨트롤) ]

    7부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (변수 컨트롤) ]

    8부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (파일 선택, 최상위에 창 고정, 마우스 이펙트 표시) ]

    9부 - 엔지엠 디자이너로 엔지엠 매크로 플레이어 만들기. (스크립트 개별 선택 및 실행) ]

     

    위의 9부 내용을 학습하셨으면 Visaul Studio Community 디자인이 아래와 비슷할겁니다.

    8mBnMhO.png

     

     

    엔지엠 매크로 디자이너는 개발(Development) 및 추적(Trace)에 도움이 되는 이벤트를 제공하고 있습니다. 예제로 만든 스크립트는 윈도우 바탕화면의 내PC 아이콘을 클릭하는 간단한 내용입니다. 여기에 사용자가 커스텀으로 만든 클릭 액션을 하나 추가 해볼께요. 첫번째 실행 버튼의 클릭 이벤트에 아래와 같이 플레이어 이벤트를 2개 연결 해주세요.

    private void button1_Click(object sender, EventArgs e)
    {
        this.script1.Player.StatusChanged += Player_StatusChanged;
        this.script1.Player.BeforeCurrentAction += Player_BeforeCurrentAction;
    
        this.script1.Player.SetOption(NGM.Client.SystemHelper.GetOptionConfig(NGM.Definition.ExternalPlayerDefaultTitle, true));
        this.script1.Player.Play();
    }

     

    이벤트는 누적(+=)이기 때문에 스크립트가 완료되거나 중지되면 이벤트를 제거(-=)해줘야 합니다. 안그러면 중복 이벤트가 동작합니다.

    private void Player_StatusChanged(object sender, NGM.Events.PlayerStatusArgs e)
    {
        if (e.Status == NGM.Definition.MacroState.Stop)
        {
            this.script1.Player.BeforeCurrentAction -= Player_BeforeCurrentAction;
            this.script1.Player.StatusChanged -= Player_StatusChanged;
        }
    }

     

     

    액션 실행 전 이벤트에 아래와 같이 코딩해줍니다. 마우스 클릭 모델을 하나 만들고, 좌표를 100, 100으로 설정했습니다.

    private void Player_BeforeCurrentAction(object sender, NGM.Events.TreeNodeActionArgs e)
    {
        if (e.ActionItem.Name == "MouseClick")
            MessageBox.Show(e.ActionItem.Text);
    
        var click = new NGM.Models.Mouse.ClickModel()
        {
            FunctionKey = NGM.Definition.FunctionKey.MOUSE_CLICK,
            MainView = this,
            TreeView = this.script1.Player.ScriptView.TreeView,
            MousePoint = new Point(100, 100)
        };
    
        NGM.Macro.Engine.Action.Mouse.MouseClick((NGM.Macro.Engine.MacroPlayer)this.script1.Player, click);
    
        System.Threading.Thread.Sleep(1000);
    }

     

    NGM.Macro.EngineAction.MouseMouseClick 메소드에 모델을 넣어주면 액션이 실행됩니다. 아래는 실행 동영상인데요. BeforeCurrentAction이기 때문에 스크립트의 마우스 클릭이 동작하기 전 사용자가 만든 클릭이 동작합니다. 윈도우 바탕화면의 100, 100 위치를 클릭하고, 1초 후 스크립트 클릭이 발생합니다.

     

     

    그리고, 아래 코드가 동작하기 때문에 어떤 액션이 실행되었는지 메세지 박스로 확인도 가능했습니다.

    if (e.ActionItem.Name == "MouseClick")
        MessageBox.Show(e.ActionItem.Text);

     

    AfterCurrentAction 이벤트를 연결하면 액션이 끝난 후 어떤 동작 또는 처리를 추가할수도 있습니다. 그리고, 위의 예제 코드에서 봤듯이 매크로 Status(Play, Stop, Pause)에 따라 추가적인 로직을 넣을수도 있습니다. 이외에도 다양한 함수나 수식들을 제공하고 있는데요. 개발자라면... 메소드명만 보고도 어느정도 동작을 유추할 수 있을겁니다. 하지만, 일반인이 디자이너를 제대로 다루기는 정말 어려울겁니다. 계속해서 도움말을 추가해 나가고는 있지만, 내용이 방대해서 시간이 오래 걸리네요^^

     

    필요한 부분에 대해서 홈페이지의 커뮤니티 > 질문과 답변 게시판에 남겨주시면 관련 예제를 우선적으로 작성 해드릴께요!

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.