본문 바로가기
[최대48만원] 인터넷•TV 가입시 설치당일 현금지급 정수기 렌탈시 최대50만원 추가지급
이미지 매크로

코딩 배우기 (업무 자동화 RPA 매크로)

by 업무자동화 2022. 11. 5.
반응형

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

http://ngmsoftware.com/bbs/board.php?bo_table=product1&wr_id=32 

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#매크로 #매크로프로그램 #메크로 #g매크로 #마우스매크로 #키보드매크로 #엑셀매크로 #키매크로 #수강신청매크로 #로지텍마우스매크로 #매크로키보드 #파이썬매크로 #매크로뜻 #매크로마우스 #로지텍매크로 #ld플레이어매크로 #오토마우스매크로 #키보드마우스매크로 #오토핫키매크로 #이미지매크로 #이미지인식매크로 #하드웨어매크로 #화면인식매크로 #선착순구매매크로 #이미지서치매크로 #한글매크로

 

매크로를 만들기 위해서는 2가지 방법이 있습니다. 오토핫키나 파이썬과 같은 코딩을 배워서 업무 자동화 RPA를 만드는 방법과 코딩 없이 프로그램을 만들 수 있는 전문적인 솔루션을 이용하는겁니다. 엔지엠 매크로를 이용하면 코딩 없이도 업무 자동화 RPA 매크로를 제작할 수 있습니다.

 

 

요즘 업무용 RPA 매크로를 만들 때 가장 선호하는 언어는 파이썬입니다. 간단한 예제를 통해 어떻게 매크로를 만드는지 확인 해볼까요? 우선, 개발 환경을 만들어야 합니다. 아래 사이트에서 VSCode(Visual Studio Code)를 다운로드 합시다.

비주얼 스튜디오 코드 다운로드 ]

 

 

VSCode는 설치하는데 복잡한 설정이나 변경해야 할 부분은 없습니다. 서버 설치나 데이타베이스와 같이 시스템에 영향을 주거나 사용자 계정 및 권한 관리등등 선택하는게 없기 때문입니다. C드라이브에 용량이 없다면 설치 위치정도 변경할 수 있겠네요. 하지만, 가능하면 기본값으로 설치하세요. 설치가 완료되면 비주얼 스튜디오 코드를 실행해줍니다. 아래와 같은 화면을 볼 수 있습니다.

※ 워크 스페이스나 환경에 따라 다를 수 있지만, 대부분은 아래와 비슷한 화면이 열릴겁니다.

 

 

우리는 한글이 익숙하므로 한글로 변경해줍시다.

  1. 확장 클릭. (Extensions, Ctrl+Shift+X)
  2. korean 입력
  3. Korean Language Pack for Visual Studio Code - Install 클릭

 

 

설치가 완료되면 ①Restart를 클릭하세요.

 

 

아래 그림과 같이 한글로 변경되었죠? 영어로만 보다가 한글로 보니깐 왠지 생소하네요 ㅎㅎ;

 

 

이제 파이썬을 설치 해볼까요? Extensions(Ctrl+Shift+X)를 눌러서 python을 검색합니다. 저는 이미 설치되어 있는데요. 여러분들은 아래 3가지를 모두 설치해야 합니다.

 

 

프로그래밍 언어를 처음 시작할 때 항상 하는게 있는데요. 바로~ "Hello NGMsoftware!"입니다. 개발자들이 이런걸 항상 하는 이유는 간단합니다. 개발 환경이 잘 갖춰지고 정상적으로 동작하는지 확인하기 위함이죠. 그리고, 언어를 가르치는 대부분의 전문 서적이나 사이트에서 저렇게 하기 때문에 의례 하는것 정도로 이해하시면 됩니다. 그렇게 큰 의미를 가진건 아닙니다. 아래 그림과 같이 좌측 상단 메뉴에서 파일 > 새 파일을 클릭하세요.

 

 

새로운 파일이 만들어졌습니다. 이상태에서 Ctrl+S를 눌러서 저장할 수 있는데요. VSCode는 대부분의 언어를 개발할 있도록 만들어진 IDE이기 때문에 단순히 파일만 만들어서는 어떤걸 할지 알 수 없는 상태가 됩니다. 그래서, 파일을 저장하면서 확장자를 지정하거나 아래 그림처럼 "언어 선택"을 통해 명시적으로 Visual Studio Code에게 알려줘야 합니다. "언어 선택"을 클릭해보세요.

※ 파일을 py 확장자로 저장하면 자동으로 파이썬으로 인식합니다. 파이썬 확장이 없으면 알려줍니다.

 

 

python을 입력하고, 검색된 항목을 클릭해줍니다.

 

 

마우스 자동화와 키보드 자동화에 대한 자세한 설명은 아래 링크에서 확인 해볼 수 있습니다. 물론~ RPA 메크로의 핵심이라고 할 수 있는 화면 인식, 색깔 인식이나 알림등등... 다양하게 응용해서 사용할 수 있습니다.

[ 파이썬 매크로 제작 / 강의 ]

 

파이썬만큼이나 대중적으로 사용되는 언어는 오토핫키입니다. 아래 사이트에서 오토핫키를 다운로드 후 설치하세요.

[ 오토핫키 다운로드 ]

 

 

설치는 항상 그렇듯이~ 계속 누르면 됩니다.

 

 

버전은 64비트로 설치 했는데요. 운영체제가 x86이면 32비트로 설치하세요.

 

 

이 후 옵션들을 선택할 수 있는데요. 인코딩 문제들을 피하려면 UTF-8을 선택하는게 좋습니다. 파일 드래그 & 드롭 기능도 활성화 해주세요~

 

 

이제 새로운 스크립트를 하나 만들어보죠~ 엔지엠 에디터의 새 스크립트와 동일합니다. 윈도우 바탕화면에서 우클릭 후 아래 그림과 같이 "Autohotkey Script"를 클릭하세요.

 

 

바탕화면에 오토핫키 스크립트 파일이 생겼을겁니다. Visual Studio Code에서 열어줍니다. 비주얼 스튜디오 코드가 없다면 메모장이나 텍스트 에디터 도구를 사용해서 열어주세요. 가능하면 비주얼 스튜디오 코드를 설치하시는게 좋을겁니다. 텍스트를 편집하기 위한 유용한 기능들이 많이 있거든요^^; 일반적인 개발 언어가 아니기 때문에 비주얼 스튜디오에서 아래와 같은 보안 경고 메세지가 표시됩니다. "모든 작업 영역에 대한 내 결정 기억"에 체크하고, "열기"를 클릭하세요.

 

 

오토핫키를 쉽고 빠르게 개발하기 위한 확장 도구들을 설치 해줍니다. 오토핫키를 하면서 아직도 메모장에서 작업하는 사람은 없겠죠^^;

 

 

이렇게 3개 설치하시면 됩니다. 시각화와 디버그 및 개발 편의성을 개선해줍니다. 저는 이미 자바스크립트나 노드, 파이썬등등을 개발하기 위한 환경을 준비해놔서 코드 러너도 설치되어 있습니다. 여러분들도 마켓플레이스에서 "Code Runner"를 검색해서 추가로 설치해야 합니다.

 

 

비주얼 스튜디오 코드의 환경 구성 파일인 settings.json에 오토핫키(Autohotkey macro)를 개발할 수 있는 몇가지 설정들이 필요합니다. Ctrl+,(콤마)를 누르면 설정 화면이 표시됩니다. 아래 그림과 같은 설졍 화면에서 우측 상단에 "설정 열기(Json)"을 클릭하세요.

 

 

오토핫키 기본 위치와 인코딩을 설정 해줍니다.

  "code-runner.executorMap": {
    "ahk": "\"C:\\Program Files\\AutoHotkey\\AutoHotkey.exe\""
  },
  "code-runner.executorMapByFileExtension": {
    ".ahk": "\"C:\\Program Files\\AutoHotkey\\AutoHotkey.exe\""
  },
  // 터미널 윈도우 UTF-8설정
  "terminal.integrated.profile.windows": ["-NoExit", "/c", "chcp.com 65001"]

 

 

저는 여러가지 개발 환경을 가지고 있다보니 단축키 설정은 안했는데요. 만약, 오토핫키만을 위한 단축키를 연결하려면 아래 내용도 추가 하세요.

 
    { "key": "f5", "command": "code-runner.run","when": "editorTextFocus && editorLangId == 'ahk'"},
    { "key": "f6", "command": "code-runner.stop" },

 

 

이제 간단한 테스트를 해볼까요? 메세지 박스를 표시하는 스크립트입니다. 아래 코드를 추가하고 실행 해보세요.

MsgBox, 1, NGMsoftware, 안녕하세요!`n엔지엠소프트웨어입니다., 3

 

 

메세지 박스를 3초간 표시 해줍니다. 여러분들도 잘 동작하죠?

 

 

엔지엠 에디터에서는 아래와 같이 스크립트를 작성할 수 있습니다. 프로그래밍에서 줄바꿈은 \n입니다. 하지만, 오토핫키는 `n으로 줄바꿈을 할 수 있습니다.

 

 

실행하면 동일한 결과를 확인할 수 있습니다.

 

 

엔지엠 에디터는 유료 소프트웨어라서 오토핫키보다 사용은 쉽습니다. GUI로 작업하기 때문에 직관적이기도 하구요. 무엇보다 코딩을 몰라도 누구나 쉽게 매크로를 작성할 수 있습니다. 재미로 몇가지 더 해보도록 하죠~ 아래와 같은 스크립트를 작성하고 다시 실행 해보세요.

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
F2::            ; F2를 누르면 스크립트가 실행됩니다. (단축키 등록)
Loop, 10        ; 10번 반복 한다는 뜻입니다.
{
    SendInput, NGM
    SendInput, software
    Send, {Enter}
}

 

 

엔지엠 에디터도 아래와 같이 동일하게 동작할 수 있습니다.

 

 

이외에도 자바나 C#으로 매크로를 만들기도 하는데요. C나 C++도 많이 사용하고 있습니다. 아래 예제는 C를 이용한 마우스 매크로 코드입니다.

1. C for Visual Studio 2022

#include <windows.h>

void MouseMove()
{
    SetCursorPos(300, 300);
}

void MouseLeftClick()
{
    INPUT    Input = { 0 };

    // Left down
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
    SendInput(1, &Input, sizeof(INPUT));

    // Left up
    ZeroMemory(&Input, sizeof(INPUT));
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
    SendInput(1, &Input, sizeof(INPUT));
}

int main(VOID)
{
    MouseMove();
    MouseLeftClick();
}

 

 

이 코드를 실행하면 마우스가 정상 동작하는건 확인할 수 있습니다. 다만, 콘솔창이 표시되서 그림판에 클릭이 안되고 있네요. 코드를 아래와 같이 변경하고 다시 해보세요. 콘솔창이 표시되지 않고 마우스가 그림판을 클릭합니다. C 프로젝트의 속성에서 서브시스템을 콘솔이 아닌 윈도우로 변경해야 합니다.

#include <windows.h>

void MouseMove()
{
    SetCursorPos(300, 300);
}

void MouseLeftClick()
{
    INPUT    Input = { 0 };

    // Left down
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
    SendInput(1, &Input, sizeof(INPUT));

    // Left up
    ZeroMemory(&Input, sizeof(INPUT));
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
    SendInput(1, &Input, sizeof(INPUT));
}

int CALLBACK WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nShowCmd)
{
    MouseMove();
    MouseLeftClick();
}

 

 

윈도우 프로그램을 만들 때 가장 많이 사용되고 있는 C#은 어떨까요? C#의 경우에는 Core와 .NET 설정이 다릅니다. Core의 경우 플랫폼에 종속되지 않기 위해 닷넷 프레임워크에서 제공하는 Windows 관련 라이브러리를 사용할 수 없습니다. 물론, 프로젝트 파일에서 직접 설정하면 유용한 함수들을 쉽게 사용할 수 있지만 다른 플랫폼(리눅스, 맥)에서 프로그램이 동작하지 않게 되는 단점이 있습니다.

using System;
using System.Runtime.InteropServices;

namespace ConsoleApp1
{
    class Program
    {
		const int InputMouse = 0;
		const int MouseEventMove = 0x01;
		const int MouseEventAbsolute = 0x8000;
		const int MouseEventLeftDown = 0x02;
		const int MouseEventLeftUp = 0x04;

		[DllImport("user32.dll", SetLastError = true)]
        private static extern uint SendInput(uint numInputs, Input[] inputs, int size);

		internal struct MouseInput
        {
            public int X;
            public int Y;
            public uint MouseData;
            public uint Flags;
            public uint Time;
            public IntPtr ExtraInfo;
        }

        internal struct Input
        {
            public int Type;
            public MouseInput MouseInput;
        }

        static void Main(string[] args)
        {
			MouseLeftClick();
		}

		static void MouseLeftClick()
		{
			Input[] inputs = new Input[2];

			inputs[0] = new Input();
			inputs[0].Type = InputMouse;
			inputs[0].MouseInput.X = (300 * 65535) / System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
			inputs[0].MouseInput.Y = (300 * 65535) / System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
			inputs[0].MouseInput.Flags = MouseEventAbsolute | MouseEventMove;

			inputs[1] = new Input();
			inputs[1].Type = InputMouse;
			inputs[1].MouseInput.Flags = MouseEventLeftDown;

			SendInput(2, inputs, Marshal.SizeOf(inputs[0]));

			inputs = new Input[1];

			inputs[0] = new Input();
			inputs[0].Type = InputMouse;
			inputs[0].MouseInput.Flags = MouseEventLeftUp;

			SendInput(2, inputs, Marshal.SizeOf(inputs[0]));
		}
	}
}
 

엔지엠 매크로에는 [ 픽셀 체크(고정 좌표 색깔 인식) ], [ 픽셀 서치(화면 색상 찾기) ]와 [ 이미지 체크(고정 좌표 화면 인식) ], [ 이미지 매치 ], [ 이미지 서치 ]등등... 다양한 방법으로 윈도우 화면을 인식하고, 클릭할 수 있습니다. 물론, 조건에 따라 업무 비즈니스 로직을 처리할 수도 있습니다. 각각의 사용 방법 및 옵션은 도움말을 참고하시고, 오늘은 화면 인식을 가장 빠르게 할 수 있는지에 대해 알아보겠습니다.

[ 화면 인식 액션들의 차이점 ]

 

테스트를 위해 엔지엠 에디터를 실행하고, 새로운 스크립트를 하나 추가하세요.

 

 

그림판에 오랜지색 점을 하나 찍어 두었습니다.

 

 

오랜지색 점을 인식하는데 어떤게 가장 빠른 방법인지 알아볼께요. 먼저 픽셀 체크 액션을 추가하고, 오랜지색 점을 인식시켜 보세요.

  • 이미지 인식 평균 시간: 0.046

 

 

픽셀 서치도 동일하게 테스트 해보세요. 픽셀 체크와 크게 의미있는 성능 차이는 아닙니다. 다만, 듀얼모니터를 사용하고, 인식 좌표가 2번 모니터라면 좀 달라질 수 있을겁니다.

  • 이미지 인식 평균 시간: 0.047

 

 

이미지 체크는 변수가 상당히 많습니다. 비교해야 하는 이미지의 크기와 위치가 영향을 주기 때문입니다. 우선, 테스트는 아래와 같습니다. 픽셀 체크나 픽셀 서치보다 약간 느리지만 크게 의미가 있는 숫자는 아닙니다. 사실, 윈도우 환경에서 1000분의 10초까지는 정확하게 처리하지 못하기 때문입니다.

  • 이미지 인식 평균 시간: 0.053

 

 

이미지 서치 액션을 추가하고, 테스트 해볼까요? 역시 성능이 확 떨어집니다. 이미지 체크보다 약 3배 더 느려졌습니다.

  • 이미지 인식 평균 시간: 0.158

 

 

이미지 매치도 동일하게 테스트 해보세요. 이미지 서치보다 더 느려졌습니다.

  • 이미지 인식 평균 시간: 0.231

 

 

이번에는 옵션에서 노말(Normal)을 스페셜(Special)로 변경하고 저장한 후 다시 테스트 해보겠습니다. 이 테스트는 이미지 체크와 서치, 매치만 진행 해볼께요.

 

 

이미지 체크는 노말 모드보다 약간 빨라졌습니다.

  • 노말 인식 평균 시간:   0.053
  • 스페셜 인식 평균 시간: 0.042 (20% 향상)

 

 

이미지 서치도 성능 향상이 있습니다.

  • 노말 인식 평균 시간:   0.158
  • 스페셜 인식 평균 시간: 0.145 (8% 향상)

 

 

이미지 매치도 약간 빨라졌네요.

  • 노말 인식 평균 시간:   0.231
  • 스페셜 인식 평균 시간: 0.198 (16% 향상)

 

 

픽셀 서치, 이미지 서치, 이미지 매치는 찾기 영역을 설정할 수 있습니다. 매크로가 동작해야 할 창 크기만큼 설정해주거나 화면을 인식해야 할 공간정도만 작게 설정할수록 속도는 더 빨라집니다. 예를 들어 아래와 같이 오랜지색 점 근처를 찾기 영역으로 설정 해보았습니다.

 

 

찾기 영역을 설정한 이미지 서치는 노말 옵션으로 전체 화면에서 찾는것보다 약 2.7배 빨라졌습니다. 그런데, 모든 환경에서 찾기 영역을 설정할 수 있는건 아니라서 진정한 의미의 성능 향상이라고 볼수는 없습니다. 사실, 로직적인 부분이라서요^^;

  • 노말 인식 평균 시간:   0.158
  • 스페셜 인식 평균 시간: 0.145
  • 찾기 영역 설정 후:     0.058 (272% 향샹)

 

 

이미지 매치도 이미지 서치와 비슷하게 성능이 향상됩니다. 노말 옵션의 전체 화면 인식보다 약 3.6배 빨라졌습니다. 찾기 영역을 잘 활용하면 좀 더 빠르게 작업할 수 있는 매크로 환경이 만들어질겁니다. 특정 영역에서 이미지를 인식해야 하는 경우에도 전체 화면에서 찾기를 수행하는건 비효율적입니다.

  • 노말 인식 평균 시간:   0.231
  • 스페셜 인식 평균 시간: 0.198
  • 찾기 영역 설정 후:     0.063 (366% 향샹)

 

 

이미지 인식 알고리즘은 계속해서 개선되고 있어서 앞으로는 점점 더 빨라지지 않을까 생각하는데요. 이 부분은 컴퓨터의 성능과도 밀접하게 연관되어 있습니다. 물론, 좋은 CPU와 그래픽카드를 사용하면 좋겠지만 비용이 발생하는 부분인데다 수익 대비 비용을 따져보면 투자가 맞는지 의문이 들 수 있습니다. 참고로, 픽셀 서치, 이미지 서치, 이미지 매치와 같은 알고리즘은 CPU 성능에 크게 좌우됩니다.

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#비활성매크로 #g102매크로 #철권매크로 #레이저마우스매크로 #ghub매크로 #녹화매크로 #키보드반복매크로 #로지텍마우스광클매크로 #플라스크매크로 #윈도우매크로 #비활성g매크로 #오토매크로 #자동사냥 #주식매크로 #오토핫키키보드 #오토핫키마우스 #오토핫키이미지 #지존오토 #기계식매크로 #하드웨어매크로 #무한반복매크로 #대량이메일발송매크로 #엑셀VBA매크로 #주식모니터링매크로 #이미지맥스 #심플핫키 #오토클리커 #UiPath #Brity #스푸퍼 #DKOM #모바일게임매크로 #다클라매크로 #다계정매크로 #인스타그램매크로

반응형

댓글