NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 6
  • 매뉴얼

    NGM 6

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

    커스텀 3부 - 커스텀 모듈로 이미지 서치에 마우스 클릭 추가하기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 앞서 1부와 2부에서 이미지 서치 또는 이미지 매치를 커스텀 모듈로 만들어봤습니다. 오늘은 마지막으로 마우스 클릭 기능을 추가할건데요. 여기까지 학습을 마치면 이미지 매치 후 영역을 기준으로 다른 이미지를 찾아서 클릭하도록 만들수도 있을겁니다. 이런 부분들은 응용하기 나름이라서 생각하시는 대부분의 동작을 커스텀으로 만들 수 있어요. 이런저런 방법을 적용해서 응용해보면 실력이 금방 늘어날거예요^^

     

    비주얼 스튜디오를 실행하고, 커스텀 이미지 서치 프로젝트를 열어주세요. 개발자라면 코드를 보면 금방 알 수 있을텐데요. 비개발자는 왜 이렇게 하는지 이해하기가 어려울겁니다. 우선, return으로 메소드가 종료되기 전 if 조건으로 이미지를 찾았는지 체크해야 합니다. 체크할 수 있는 변수는 Result가 있군요^^

                Result = !rect.IsEmpty;
                MatchRate = matchRate;
    
                if (Result)
                {
    
                }
    
                return Result;

     

    if (Result) 안으로 루틴이 이동한다면 이미지를 찾았다는 뜻입니다. 따라서 이 안에 마우스 클릭 관련 코딩을 추가하면 됩니다.

                if (Result)
                {
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Position = Cursor.Position;
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Click(NGM.Utility.MouseKeyboardManager.MouseSimulator.MouseButton.Left);
                }

     

    엔지엠 매크로에서 제공해주는 마우스 클릭 로직은 위와 같이 2줄만 추가하면 됩니다. 현재 마우스 위치(Cursor.Position)를 설정하고, 마우스 시뮬레이터의 클릭 메소드를 사용합니다. 이 때 클릭 메소드는 마우스 버튼 Enum을 입력 받습니다. 왼쪽 클릭으로 설정 했습니다.

     

    이 코드를 실행하면 실제로 찾은 이미지를 클릭하지 않습니다. 현재 마우스가 위치한 곳에서 클릭이 발생합니다. 우리는 찾은 이미지의 위치 값인 rect 변수가 있습니다. 이걸 이용해서 좌표를 설정해야 합니다. 일단 rect는 찾은 이미지 위치뿐만 아니라 크기 정보도 가지고 있습니다. 사각형 영역이기 때문입니다. 그래서, 사각형 영역에서 중앙 좌표를 알아내야 합니다. 아래와 같이 x와 y 좌표를 만들 수 있습니다.

                Result = !rect.IsEmpty;
                MatchRate = matchRate;
    
                if (Result)
                {
                    int x = rect.X + rect.Width / 2;
                    int y = rect.Y + rect.Height / 2;
    
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Position = new Point(x, y);
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Click(NGM.Utility.MouseKeyboardManager.MouseSimulator.MouseButton.Left);
                }
    
                return Result;

     

    좀 더 쉽게 하려면 아래와 같이 심플하게 처리할수도 있습니다. NGM.Common 네임스페이스는 쉽게 사용할 수 있는 다양한 함수들을 제공하고 있습니다.

                Result = !rect.IsEmpty;
                MatchRate = matchRate;
    
                if (Result)
                {
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Position = NGM.Common.RectangleCenter(rect);
                    NGM.Utility.MouseKeyboardManager.MouseSimulator.Click(NGM.Utility.MouseKeyboardManager.MouseSimulator.MouseButton.Left);
                }
    
                return Result;

     

    이제 완성된 코드를 빌드하고, 엔지엠 6 폴더에 배포하세요.

    3k0Sy3j.jpg

     

     

    엔지엠 매크로 에디터를 실행하고, 사용자 도구 상자에서 이미지 서치 액션을 가져오세요.

    DNEQnst.jpg

     

     

    매크로를 실행 해보세요.

     

     

    이미지를 찾은 후 정 가운데를 클릭합니다. 추가적으로 마우스를 클릭할지 말지 설정할 수 있는 속성을 하나 만드는것도 좋을거 같은데요. 뭔가 사용자가 직접 처리하게 하고 싶다면 속성으로 설정 값들을 받을 수 있게 해주고 Execute 메소드에서 값에 따라 로직을 만들면 됩니다. 이 부분은 직접 응용해서 한번 해보세요. 잘 안되는 부분이 있으면 홈페이지의 질문과 답변 게시판에 남겨주세요^^

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.