NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

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

    디자이너 3. 매크로 제작할 때 디버깅을 이용해서 스크립트를 빠르게 만드는 방법. (엔지엠 프레임워크)

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 이전 시간에 에디터와 디자이너에서 디버깅 하는 방법에 대해 자세하게(?) 알아봤습니다. 마지막으로 엔지엠 프레임워크를 이용해서 디버깅하는 방법에 대해 알아볼건데요. 사실~ 프레임워크는 이제 완전 개발자 수준의 코딩이라서 일반인분들이 이 내용을 학습하기란 쉽지 않을겁니다. 따라서, 재미로 가볍게 읽어보시면 좋을거 같네요^^ 자~ 비주얼 스튜디오를 실행하고, 새로운 프로젝트를 만듭니다. 그리고, 디자이너를 참조에 추가하세요. 폼 디자인은 뭐 별거 없습니다!

    dnmufS1.png

     

     

    매크로 제작에 관심있는 분들은 오토핫키라고 한번쯤은 들어보셨을겁니다. 오토핫키를 할줄 아시는 분들이면 엔지엠 프레임워크도 어느정도 사용할 수 있을텐데요. 그렇더라도 C# 개발자만큼 지식을 갖춰야 좀 더 개인화된 파워풀한 매크로를 만들 수 있습니다. 아마도... 개발자라면 이 내용을 볼 필요도 없긴하겠네요. 폼에 추가한 버튼을 더블 클릭해서 코드뷰로 전환하세요. 그리고, 아래 2줄을 추가 해줍니다.

    using System.Windows.Forms;
    using ng = NGM.Utility.ImageManager.ImageCondition;
    using screenshot = NGM.Utility.ScreenCaptureManager;

     

    버튼의 클릭 이벤트에는 아래와 같이 코딩하세요. 코드 내용은 바탕화면의 내 PC이미지를 윈도우 화면에서 찾는겁니다. 그리고, 결과를 콘솔로 찍어주고 있습니다.

            private void button1_Click(object sender, EventArgs e)
            {
                var source = Image.FromFile(@"C:\Users\ngmas\Desktop\내 PC.png");
                var target = screenshot.ScreenShot.DesktopCapture();
                Rectangle rect = ng.IsFind(source, target, 80, NGM.Definition.ImageMatchOption.CCoeffNormed);
                Console.WriteLine(rect);
            }

     

    비주얼 스튜디오에서 너무 많은 정보를 표시하다보니 원하는 값만 확인하기가 어려울수도 있는데요. 익숙해지면 그리 어렵지 않게 필요한 내용만 확인할 수 있습니다. 바탕화면의 내 PC 이미지를 가져와서 IsFind 함수를 통해 결과를 출력합니다. 출력창에서 이미지를 찾은 위치를 확인할 수 있죠?

    mDCilv2.gif

     

     

    개발자들은 이렇게 콘솔에서 값을 확인하지는 않습니다. 대부분 필요한 데이타를 담고 있는 오브젝트를 조사식에 등록해두고, 체크합니다.

    TzGj2II.gif

     

     

    이제 찾은 이미지를 마우스로 클릭 해볼까요? 기존 코드에서 마우스 관련 2줄이 추가 되었습니다.

            private void button1_Click(object sender, EventArgs e)
            {
                var source = Image.FromFile(@"C:\Users\ngmas\Desktop\내 PC.png");
                var target = screenshot.ScreenShot.DesktopCapture();
                Rectangle rect = ng.IsFind(source, target, 80, NGM.Definition.ImageMatchOption.CCoeffNormed);
                Console.WriteLine(rect);
    
                mouse.Position = NGM.Common.RectangleCenter(rect);
                mouse.Click(mouse.MouseButton.Left);
            }

     

    실행하면 이미지를 찾아서 클릭까지 해줍니다. 코드 내용도 아주 쉽습니다.

    oPv9H9o.gif

     

     

    여기서 디버깅도 동일합니다. 실제 좌표와 마우스가 클릭할 센터 좌표를 비교해볼 수 있습니다. 직접 실행창은 마우스가 이동하기 전 사각형 영역의 중간 지점을 미리 확인할 수 있습니다. 좀 더 간단히 말해서 직접 실행창을 통해 함수를 미리 처리해보고, 결과 값을 받아볼 수 있다는 뜻입니다.

    tUGkFg1.gif

     

     

    뭔가 점점 더 어려워지는듯 하지만... 네 그렇습니다. 이렇게 하나씩 배워가면서 실력이 늘어야 하는데요. 사실 소프트웨어 개발이 업이 아닌 경우 이렇게 시간을 보내는건 큰 도움이 되지는 않을거 같습니다. 저도 개발 관련된일이 아니면~ 대부분 구매해서 쓰거나 다른 대안을 찾습니다. 여러분들도 마찬가지일거라 생각합니다. 목적을 이루기 위해서 시간과 노력을 들이거나 돈으로 대체할수도 있습니다. 아니면... 포기하겠죠? 가성비만 좋다면 엔지엠 에디터와 플레이어같은 프로그램을 사용하는게 가장 좋은 선택일겁니다. 저도 개발자지만~ 업무용 자동화 툴을 만들 때 오토핫키나 기타 다른 제품들이 있다는걸 전혀 몰랐습니다. 그래서 여기까지 온거죠^^; 여러분들은 쉬운 길을 놔두고 돌아가지 않았으면 합니다~

     

    개발자에게 후원하기

    MGtdv7r.png

     

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

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

    감사합니다~

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

    댓글목록

    등록된 댓글이 없습니다.