본문 바로가기
마우스 매크로

C# .NET 매크로 프로그램 만들기. (상태 처리 방법 2부)

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

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

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원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 오늘은 상태 처리 방법을 좀 더 다이나믹하게 테스트 해보도록 하겠습니다. 우선, 이전 시간에 알아본 내용처럼 스크립트의 상태를 체크하고, 상태 체크 값을 비교해서 중지된 상태라면 다시 실행할 수 있도록 해야 합니다. 이 시나리오를 수행하기 위해서는 상태 값을 비교할 수 있는 텍스트 체크 액션이 필요합니다. 아래와같이 모델을 만들었는데요. 하는김에 숫자 체크 액션도 같이 만들었습니다.

 

 

체크 액션들은 모두 동일한 속성을 가져야 합니다. LeftValue와 RightValue인데요. 좌항과 우항의 값을 비교 체크하는 것이기 때문에 이 둘은 무조건 속성으로 가져야 합니다. 그렇다면, 체크 관련 액션들이 하나가 아니기 때문에 중복 코드를 생산할 필요가 없을겁니다. 따라서, 이미지 모델과 마찬가지로 체크 모델도 Base가 되어야 합니다. 모든 체크 모델은 아래 모델을 상속 받아서 구현해야 합니다.

using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing.Design;

namespace Ai.Model.Action.Condition
{
    [Serializable]
    public class CheckModel : BaseModel
    {
        [LocalizedCategory("Action")]
        [LocalizedDisplayName("LeftValue")]
        [LocalizedDescription("LeftValue")]
        [Browsable(true)]
        [DefaultValue(false)]
        [EditorAttribute(typeof(MultilineStringEditor), typeof(UITypeEditor))]
        public string? LeftValue { get; set; }

        [LocalizedCategory("Action")]
        [LocalizedDisplayName("RightValue")]
        [LocalizedDescription("RightValue")]
        [Browsable(true)]
        [DefaultValue(false)]
        [EditorAttribute(typeof(MultilineStringEditor), typeof(UITypeEditor))]
        public string? RightValue { get; set; }
    }
}

 

텍스트 체크 모델은 비교 옵션 하나를 필수로 제공해야 합니다. 왼쪽 값과 오른쪽 값을 비교할 때 어떤 방식을 사용할지 결정해야 하기 때문입니다. 기본값은 Equals입니다.

[Category("Action")]
[LocalizedDisplayName("TextCheckOption")]
[LocalizedDescription("CheckOption")]
[Browsable(true)]
[DefaultValue(typeof(Ai.Definition.TextCheckOption), "Equals")]
public Ai.Definition.TextCheckOption CheckOption { get; set; } = Definition.TextCheckOption.Equals;

 

로직은 매우 간단합니다. 비교 옵션에 따라서 닷넷의 기본 기능을 활용해서 처리하고, 반환하면 됩니다.

try
{
    switch (CheckOption)
    {
        case Definition.TextCheckOption.Empty:
            ConditionResult = string.IsNullOrEmpty(leftValue) && string.IsNullOrEmpty(rightValue);
            break;
        case Definition.TextCheckOption.LeftEmpty:
            ConditionResult = string.IsNullOrEmpty(leftValue);
            break;
        case Definition.TextCheckOption.RightEmpty:
            ConditionResult = string.IsNullOrEmpty(rightValue);
            break;
        case Definition.TextCheckOption.StartWith:
            ConditionResult = leftValue.StartsWith(rightValue);
            break;
        case Definition.TextCheckOption.EndWith:
            ConditionResult = leftValue.EndsWith(rightValue);
            break;
        case Definition.TextCheckOption.Contains:
            ConditionResult = leftValue.Contains(rightValue);
            break;
        default:
            ConditionResult = leftValue == rightValue;
            break;
    }
}

 

추가해야 할 코딩은 얼마 되지 않을뿐더러 매우 간단합니다. 에디터를 실행하고, 아래와 같이 구성했습니다. state 변수는 실행한 서브 스크립트의 상태 값을 저장합니다.

 

 

스크립트를 동기 모드로 실행하기 때문에 텍스트 체크에서 비교한 후 무조건 다시 실행되게 됩니다.

 

 

이전 글에서 플레이스홀더 기능을 만들었기 때문에 이 기능을 사용해봤습니다. 그리고, Stop 상태인지 비교하기 때문에 서브 스크립트가 중지상태라면 실행하도록 했습니다.

 

 

매크로를 실행하면, 서브 스크립트가 실행됩니다. 동기 모드라서 서브 스크립트가 완료된 후 상태 값을 저장하기 때문에 무조건 한번 더 실행하게 됩니다.

https://youtu.be/y3x-Jk4EgOo

 

 

만약, 서브 스킯트를 비동기 모드로 실행하면 바로 아래에 있는 상태에는 실행중으로 저장됩니다. 그러면, 텍스트 체크에서 Stop과 값이 달라서 False가 됩니다.

https://youtu.be/i3SjvA_8tlE

 

 

스크립트의 상태에 따라서 중지하거나 실행하는 시나리오를 테스트 해봤습니다. 내용은 간단하지만, 막상 구현하려면 어려운 부분들이 한둘이 아닐겁니다. 그렇더라도 동작해야 할 프로세스를 머리속으로 정리한 후 시나리오에 맞게 액션들을 구성해보세요. 프로그래머나 일반인이나 특별히 다를건 없습니다. 얼마나 많은 액션들을 알고 있느냐와 어떻게 응용할것인가를 고민하는건 동일합니다. 프로그래머도 다양한 언어를 학습하고, 사용해봐야 더 좋은 코드를 작성할 수 있거든요.

 

처음 매크로 프로그램에 입문하시는 분들도 마찬가지 입니다. 귀찮더라도 꼼꼼하게 도움말을 읽어보고, 하나씩 동작을 눈으로 확인하면서 프로세스를 쌓아 나간다면 얼마든지 업무 자동화 매크로 프로그램을 제작할 수 있습니다. 다만, 제작에 너무 많은 에너지를 낭비하는건 좋지 않다고 생각합니다. 기본적으로 해야 할 생업이 존재하고 취미로 하시는 경우에는 마음의 여유를 가지고, 천천히 하나씩 만들어 나가는게 더 중요합니다^^

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

반응형

댓글