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

C# .NET 매크로 프로그램 만들기. (모바일 안드로이드 스마트폰에서 마우스 이펙트 보기)

by 업무자동화 2024. 6. 19.
반응형

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

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

 

안녕하세요. 엔지엠소프트웨어입니다. 이전 시간에 비활성(PostMessage, SendMessage)에서 마우스 이펙트를 표시하는 방법과 활성(Event, Input, Arduino, ClassDD, Interception) 매크로에서 마우스 이펙트를 표시하는 방법을 코딩하고, 테스트 했습니다. 이번에는 모바일 기기(Device: 디바이스)인 안드로이드폰에서 마우스 클릭 좌표를 상대 좌표로 변환해서 표시하는 방법을 알아보도록 하겠습니다.

 

 

이 테스트를 진행하려면 안드로이드폰이 준비되어 있어야 합니다. 이 테스트에는 안드로이드 갤럭시 Z플립을 사용했습니다. ADB와 SCRCPY를 이용해서 PC와 연결하세요.

 

 

아래 명령으로 안드로이드폰을 컴퓨터에 표시합니다.

scrcpy -t --window-width=360 --window-height=879 --show-touches

 

 

갤럭시 Z 플립이 윈도우에 표시되었습니다.

 

 

배율은 3분의 1로 줄여서 윈도우에 표시한건데요. 이렇게 배율을 조절하면 수십대의 핸드폰을 컴퓨터에 연결해서 제어할 수 있습니다. 엔지엠 매크로 에디터에서 안드로이드 폰에 연결하고, 마우스 클릭 좌표를 설정 했습니다. 마우스 좌표는 연결된 기기만큼 자동으로 조정되고, 동시에 명령을 수행합니다.

 

 

오래전이긴 하지만, 안드로이드 관련 기능 개발을 다시 상기해보면 마우스 관련 기능들에 이펙트 처리는 추가되지 않았다는걸 알 수 있는데요. 이전 시간에도 활성과 비활성에만 기능을 추가 했습니다. 안드로이드폰을 매크로로 제어하는 것도 비활성에 가깝습니다만, 윈도우 API가 아니기 때문에 코딩 방식과 명령 처리가 많이 다릅니다. 우선, 마우스 처리 로직의 마지막에 아래와 같이 이펙트를 추가해줍니다.

if (player.Manager.UseMouseEffect)
{
    var process = Ai.Common.Windows.FindWindow(device.Model.Replace("_", "-"));

    if (process != IntPtr.Zero)
    {
        var location = Ai.Common.Mouse.AdbActiveMouseLocation(process, new Rectangle(DeviceLocation, new Size(0, 0)), Coordinate);
        player.Manager.ShowMouseEffect(location);
    }
    else
        player.Manager.ShowMouseEffect(Coordinate);
}

 

컴퓨터에 연결된 디바이스의 숫자만큼 마우스 이펙트를 처리하려면 현재 어떤 디바이스에서 처리되고 있는지를 알아야 합니다. 사실, 간단하게 처리하고 싶어서 여러가지 정보들을 검색 해봤는데요. 아쉽게도 저와 같은 사람들이 많았지만, SCRCPY에서 터치 이벤트가 트리거 되지 않는다는 글만 봤습니다. 그래서 여러가지 아이디어를 조합해서 안드로이드 디바이스의 좌표를 윈도우로 끌어내서 각각 처리하도록 했습니다.

 

이렇게 하기 위해서는 디바이스 정보를 먼저 추출하고, 이 정보를 이용해서 디바이스가 윈도우의 어느 위치에 있는지 알아내야 합니다. 우선, 디바이스에서는 Model명을 확인할 수 있기 때문에 이 정보로 창 핸들을 얻습니다. 그리고, 창의 위치를 알아낼 수 있는데요. 이 정보와 마우스 위치를 계산하면 ADB 좌표를 윈도우의 좌표로 변환할 수 있게 됩니다.

 

아래는 ADB 좌표를 윈도우 좌표로 변환해주는 간단한 함수입니다.

public static System.Drawing.Point AdbActiveMouseLocation(IntPtr currentHandle, System.Drawing.Rectangle initialRect, System.Drawing.Point mousePoint)
{
    Ai.Common.Windows.GetWindowRect(currentHandle, out System.Drawing.Rectangle currentRect);
    mousePoint.Offset(currentRect.X - initialRect.X, currentRect.Y - initialRect.Y);
    return mousePoint;
}

 

몇가지 테크닉이 더 필요하지만, 엔지엠 매크로 엔진에 연결되어 있어서 내용이 약간 복잡합니다. 그리고, SCRCPY뿐만 아니라 녹스나 엘디 플레이어 또는 뮤뮤, 미뮤, 블루스택등등... 상당히 많은 에뮬레이터도 존재합니다. 이런 수많은 디바이스에서 처리하기란 쉽지 앟습니다. 제조사마다 아웃풋이 다를뿐더러 통합되지 못한 환경탓에 난코딩을 유발하기 때문입니다. 그래서, 일종의 규칙을 정해야 할 필요가 있습니다. 좀 더 자세한 내용은 아래 동영상 테스트를 참고하시면 도움이 될거 같습니다.

https://youtu.be/zxWHh8DcPdM

 

 

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

반응형

댓글