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

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

 

안녕하세요. 엔지엠소프트웨어입니다. 앞서 키보드 쓰기 액션을 만들어서 사용해봤는데요. 오늘은 키보드의 나머지 기능들을 모두 만들어보고, 테스트까지 해보겠습니다. 키보드 쓰기 액션으로는 복사(Control+C), 붙여넣기(Control+V)와 같은 동작을 수행할 수 없습니다. 따라서, 키보드 다운과 업 액션이 필요한데요. 사람이 이 동작을 수행한다고 하면 아래와 같이 스크립트를 만들어야 합니다.

 

 

사람이 하는 동작과 동일하죠? 메모장을 2개 켜놓고 복사, 붙여넣기를 해볼까요?

 

 

첫번째 메모장에서 전체 선택 후 복사합니다. 그리고, 두번째 메모장을 클릭하고 붙여넣기하는 로직입니다.

https://youtu.be/hukyR51t-rs

 

 

 

의도한대로 잘 동작하는군요.

  • 대로: 어떤 상태나 행동을 나타낼 때
  • 데로: 방향을 나타내는 부적격 조사 로가 데에 덧붙은 형태

 

키보드의 특정 키를 다운할 때 사용하는 메소드입니다.

        public static void Down(KeyboardVirtualKeyCode key, Definition.DeviceInputType inputType, List<nint>? controlHandles)
        {
            switch (inputType)
            {
                case Ai.Definition.DeviceInputType.Windows:
                case Definition.DeviceInputType.Event:
                    Ai.Api.MouseKeyboardManager.KeyboardSimulator.KeyDown((Keys)key);
                    break;
                case Definition.DeviceInputType.Input:
                    var input = Ai.Global.Instance<Api.NativeInputManager.InputSimulator>();
                    input?.Keyboard.KeyDown(key);
                    break;
                case Definition.DeviceInputType.PostMessage:
                    if (controlHandles != null)
                    {
                        foreach (var handle in controlHandles)
                            Ai.Common.Windows.PostMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYDOWN, (char)key, 0);
                    }
                    break;
                case Definition.DeviceInputType.SendMessage:
                    if (controlHandles != null)
                    {
                        foreach (var handle in controlHandles)
                            Ai.Common.Windows.SendMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYDOWN, (char)key, 0);
                    }
                    break;
            }
        }

 

아래는 키보드를 땔 때 사용하는 업 메소드입니다.

        public static void Up(KeyboardVirtualKeyCode key, Definition.DeviceInputType inputType, List<nint>? controlHandles)
        {
            switch (inputType)
            {
                case Ai.Definition.DeviceInputType.Windows:
                case Definition.DeviceInputType.Event:
                    Ai.Api.MouseKeyboardManager.KeyboardSimulator.KeyUp((Keys)key);
                    break;
                case Definition.DeviceInputType.Input:
                    var input = Ai.Global.Instance<Api.NativeInputManager.InputSimulator>();
                    input?.Keyboard.KeyUp(key);
                    break;
                case Definition.DeviceInputType.PostMessage:
                    if (controlHandles != null)
                    {
                        foreach (var handle in controlHandles)
                            Ai.Common.Windows.PostMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYUP, (char)key, 0);
                    }
                    break;
                case Definition.DeviceInputType.SendMessage:
                    if (controlHandles != null)
                    {
                        foreach (var handle in controlHandles)
                            Ai.Common.Windows.SendMessage(handle, Ai.Api.Options.WindowMessage.WM_KEYUP, (char)key, 0);
                    }
                    break;
            }
        }

 

키보드 다운과 업 코드는 거의 동일합니다. 실제 API를 담당하는 메소드를 호출할 때 다운인지 업인지 차이만 있습니다. 일부 프로그램 또는 사용하는 InputType에 따라 키보드 다운 또는 업을 선택적으로 사용해야 합니다. 이번 예제처럼 메모장은 다운업 옵션을 사용해야 합니다.

        [LocalizedCategory("Action")]
        [LocalizedDisplayName("KeyInputType")]
        [LocalizedDescription("KeyInputType")]
        [Browsable(true)]
        [DefaultValue(typeof(Definition.KeyInputType), "DownUp")]
        public Ai.Definition.KeyInputType KeyInputType { get; set; } = Definition.KeyInputType.DownUp;

 

하지만, 비활성 모드에서는 Down과 Up에 대한 구분이 없습니다. 키보드 코드만 입력될 뿐입니다. 따라서, 비활성 모드에서 다운과 업을 모두 사용하면 키보드 입력이 두번 발생하게 됩니다. 비활성 모드에서는 이 옵션을 Up으로 변경하고 사용해야 정상적으로 동작합니다.

 

 

핸들은 2개를 추가해야 합니다. 첫번째 메모장에서 복사한 후 두번째 메모장에 붙여넣기 해야해서 각각 핸들이 필요합니다.

https://youtu.be/TVPS7MarjEs

 

 

 

활성 모드는 마우스와 키보드를 사용할 수 없지만, 비활성 모드는 마우스와 키보드가 자유롭고 동시에 처리가 가능합니다. 아래는 비활성으로 동작시킨 동영상입니다.

https://youtu.be/Lr8VJ75Apjc

 

 

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

반응형

댓글