본문 바로가기
이미지 매크로

C# .NET Core 매크로 프로그램 만들기. (조건 로직 만들기)

by 업무자동화 2024. 4. 16.
반응형

유료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product_review 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화

 

 

  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 이전에 이미지 서치(이미지 매치) 액션을 만들었는데요. 당시에는 이미지 처리 프로세스와 마우스 클릭에 대해 알아봤습니다. 이미지 서치는 윈도우 화면 또는 특정 프로그램에서 클릭하고 싶은 버튼이나 몬스터, 캐릭터등등... 대상을 찾는 방법입니다. 대상을 찾으면 해당 위치를 자동으로 클릭해주는데요. 오늘은 이런 조건에 따라서 로직을 처리하는 방법에 대해 알아보도록 하겠습니다.

 

아직 개선해야 할 내용들이 많이 있긴한데요. 이런 부분들은 나중에 리펙토링할 때 정리하기로 하고, 큰 로직만 구성 해보는걸로 할께요. 아래와 같이 Condition 폴더안에 TrueModel과 FalseModel을 추가하세요.

 

 

이전 엔지엠 매크로에서는 조건 분기 처리를 사용자가 직접 모두 만들어야 했습니다. 그리고, 무조건 위에서 아래로 흘러가는 프로세스다보니 True 루틴(Routine)과 False 루틴(Routine)이 자동으로 처리되지 않았습니다. 그래서, 조건 루틴에서 불필요하게 액션 이동과 이동할 대상 액션의 아이디가 필요했는데요. 이 부분을 개선하기 위해 새로운 엔지엠 매크로에서는 TrueModel과 FalseModel을 추가했습니다.

 

조건의 루틴을 담당하는 TrueModel과 FalseModel은 편집이 불가능합니다. 따라서, INoEdit 인터페이스를 상속 받도록 했습니다.

using Ai.Interface;
using System.ComponentModel;

namespace Ai.Model.Action.Condition
{
    public class FalseModel : ActionModel, INoEdit

 

참과 거짓 액션은 별다른 기능이 없습니다. 이전 버전의 그룹처럼 시각적 또는 논리적으로 액션들을 모아놓는 역할만 합니다. 그래서, 기본 기능들을 설정하지 못하도록 제약을 걸어야 하는데요. ActionModel을 상속 받고 있기 때문에 기본 프로퍼티를 제정의해서 표시하지 않도록 처리 했습니다.

        [Browsable(false)]
        public new List<Data.VariableItem>? GetVariables { get; set; }

        [Browsable(false)]
        public new List<Data.VariableItem>? SetVariables { get; set; }

 

참과 거짓 액션은 조건의 하위식으로 무조건 각각의 아이디를 할당 받아야 합니다. 따라서, 생성자에서 아이디를 셋팅해주도록 해야 합니다.

        public FalseModel(string id)
        {
            base.ID = id;
        }

 

그리고, 아이디는 읽기 전용으로 만드세요. 루틴을 처리하는 액션은 아이디를 사용자가 변경할 수 없습니다.

        [LocalizedCategory("DefaultAction")]
        [LocalizedDisplayName("ID")]
        [LocalizedDescription("ID")]
        [Browsable(true)]
        [ReadOnly(true)]
        public new string? ID => base.ID;

 

조건 액션인 이미지 매치를 스크립트에 추가하면 자동으로 참, 거짓 액션이 하위로 추가됩니다.

 

 

참, 거짓 액션은 아이디만 가지고 있습니다. 아이디는 변경할 수 없습니다.

 

 

이제 내용이 복잡해지는데요. 일주일동안 이렇게 해보고, 저렇게 해보면서 수차례 로직을 뜯어 고쳤습니다. 디자인도 계속 변경해가면서 어떻게하면 쉽게 처리할 수 있을까를 고민하는 시간이었습니다. 처음 구상은 모든 액션에 아이디를 추가하고, 참과 거짓 액션으로 이동할 수 있도록 했습니다. 여기서 문제가 발생하는데요. 중복된 반복적인 조건에서 참일 때 거짓 루틴을 건너뛸수는 있지만, 거짓일 때 상위 조건의 결과를 알 수 없어서 루틴을 건너뛸 수 없었습니다.

 

내용이 좀 복잡한데요. 여러가지 다양한 상황에 모두 만족하려면 어떻게 해야할까가 가장 큰 고민이었습니다. 그리고, 제작 도구 특성상 딱 고정된 제작 가이드가 있는게 아니다보니 너무나 많은 시나리오가 존재해서 테스트하는데 오래걸렸습니다. 몇가지 시나리오를 통과하고 잘 동작하더라도 다른 시나리오가 동작하지 않으면 어쩔 수 없이 구조를 변경하고 다시 뜯어 고쳐야 하니까요.

 

간단하게 아래와 같이 스크립트를 구성하고 테스트 해보겠습니다.

https://youtu.be/Da0pWLB7_bY

 

 

 

좀 더 복잡한 시나리오에서도 동작이 잘 되는군요.

https://youtu.be/Ca1l6cakuw4

 

 

 

한동안 닷넷 소스 코드를 올려도 문제가 없었는데요. 문제가 없다보니 방심했었나봅니다. 일부 코드에서 문제가 발생해서 작성하던 글이 모두 사라졌네요. 보통은 작성한 글을 백업해두고, 저장을 눌렀었는데... 음~ 어쩔 수 없지만, 다시 작성해야겠네요. 어떤 코드들이 데이터베이스에서 충돌나는지 찾아서 고쳐야겠습니다. 이후에 내용을 좀 더 가다듬어서 2부에서 문제가 된 내용들을 추가해야겠네요.

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

 

반응형

댓글