본문 바로가기
엔지엠 매크로

무료 마우스/키보드 매크로 사용 방법

by 업무자동화 2021. 6. 28.
반응형

원본 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

안녕하세요. 엔지엠소프트웨어입니다. 그동안 파이썬 매크로 만들기와 비교하면서 엔지엠 프레임워크로 매크로를 어떻게 만드는지 알아봤습니다. 파이썬의 경우 pyautogui라는 패키지가 있어서 쉽고 빠르게 마우스와 키보드를 제어하는 매크로를 만들 수 있었습니다. 엔지엠 프레임워크를 사용하면, 마우스와 키보드뿐만 아니라 이미지, 문자 판독등등 쉽게 처리가 가능합니다. 사실, 프레임워크가 아닌 에디터를 사용하면 더 쉽습니다-_-; 코딩을 몰라도 업무를 분석하고 구성할 수 있는 능력만 있으면 아무나 게임이나 업무를 자동화할 수 있습니다. (업무 분석, 구성, 응용력은 연습이 필요합니다.) 이전 글들을 학습하신 분들은 Visual Studio를 실행하고, 솔루션을 열어주세요. 솔루션이 없는 분들은 이 글에 첨부되어 있는 솔루션을 열어주세요.#region 참조 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Mouse = NGM.Utility.MouseKeyboardManager.MouseSimulator; using Keyboard = NGM.Utility.MouseKeyboardManager.KeyboardSimulator; using System.Windows.Forms; using System.Drawing; using System.Runtime.InteropServices; #endregion namespace ConsoleApp1 { class Program { #region Windows API [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); const int SW_HIDE = 0; const int SW_SHOW = 1; #endregion static void Main(string[] args) { // 콘솔창이 표시되지 않도록 합니다. ShowWindow(GetConsoleWindow(), SW_HIDE); // 메모장을 클릭합니다. Mouse.Position = new Point(300, 100); Mouse.Click(Mouse.MouseButton.Left); // 메모장에서 키보드를 누르고 있는 상태입니다. foreach (char c in "안녕하세요. NGMsoftware입니다.") { Keyboard.Write(c.ToString()); } // 콘솔창을 표시합니다. ShowWindow(GetConsoleWindow(), SW_SHOW); // 콘솔 출력을 확인하기 위해 대기합니다. 아무키나 누르면 프로그램이 종료됩니다. Console.ReadLine(); } } }

 

 

파이썬에서는 pip(Python Package Index)를 이용해서 원하는 패키지를 설치할 수 있습니다. 노드의 npm 또는 yarn과 같은 소프트웨어입니다. 엔지엠 프레임워크는 디자이너가 설치된 폴더에 패키지가 같이 설치됩니다. 파이썬이나 노드는 글로벌하게 패키지를 설치하거나 워크스페이스 또는 세션(Session)별로 관리됩니다. C#이나 Java같은 컴파일 언어들은 참조되는 모듈(자바는 패키지)이 프로젝트에 같이 있어야 합니다. Visual Studio의 우측 솔루션 탐색기에서 프로젝트를 선택하고 우클릭하세요. 그리고, "파일 탐색기에서 폴더 열기"를 클릭하세요.

 

 

이 위치에 아래 파일을 복사해서 붙여넣기 하세요.

  • 32bit: C:\Program Files (x86)\NGMsoftware\NUI\x86\OpenCvSharpExtern.dll
  • 64bit: C:\Program Files\NGMsoftware\NUI\x64\OpenCvSharpExtern.dll

 

 

솔루션 탐색기 상단 메뉴의 오른쪽 마지막에 문서 그림 3개가 겹쳐져 보이는게 있을겁니다. "모든 파일 표시" 버튼을 체크하세요. 그러면, 프로젝트 아래 "OpenCvSharpExtern.dll" 파일이 표시됩니다. 아직 프로젝트에 추가된건 아니고, 파일만 추가된 상태입니다.

 

 

"OpenCvSharpExtern.dll"을 우클릭하고 "프로젝트에 포함"을 클릭하세요.

 

 

"OpenCvSharpExtern.dll"을 다시 우클릭하고, 속성을 클릭하세요.

 

 

"출력 디렉터리에 복사" 옵션을 "새 버전이면 복사"로 변경해줍니다. 이렇게 설정하면 프로젝트를 컴파일(빌드)할 때 해당 파일이 배포 위치로 복사됩니다.

 

 

코드를 아래와 같이 변경해주세요.

#region 참조 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Mouse = NGM.Utility.MouseKeyboardManager.MouseSimulator; using Keyboard = NGM.Utility.MouseKeyboardManager.KeyboardSimulator; using System.Windows.Forms; using System.Drawing; using System.Runtime.InteropServices; #endregion namespace ConsoleApp1 { class Program { #region Windows API [DllImport("kernel32.dll")] static extern IntPtr GetConsoleWindow(); [DllImport("user32.dll")] static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); const int SW_HIDE = 0; const int SW_SHOW = 1; #endregion static void Main(string[] args) { // 콘솔창이 표시되지 않도록 합니다. ShowWindow(GetConsoleWindow(), SW_HIDE); // 가상 엔지엠 플레이어 컨테이너를 만듭니다. var mv = new Designer.ComponentDefault.MainView(); // 모든 로그를 표시하도록 옵션을 변경합니다. AllLogOn(mv); // 엔지엠 플레이어가 로그를 기록하면 이벤트가 발생합니다. mv.LogReceived += Mv_LogReceived; // 가상 스크립트를 만듭니다. var sv = new Designer.Component.ScriptView(mv, "./Dummy.ngs"); // 액션을 추가합니다. "이미지서치"는 스크립트에 추가된 액션의 이름입니다. // 이름은 아무렇게나 지어도 되지만, 중복되면 안됩니다. var tn = sv.TreeView.Nodes.Add("이미지서치"); tn.Tag = new NGM.Models.Condition.MatchImageModel() { FunctionKey = NGM.Definition.FunctionKey.CONDITION_MATCH_IMAGE, ImagePath = @"C:\Users\ngmas\Desktop\Cat.png", MouseAction = NGM.Definition.MouseClickAction.LeftClick }; // 스크립트를 실행합니다. sv.Play(); // 숨긴 콘솔을 다시 표시합니다. //ShowWindow(GetConsoleWindow(), SW_SHOW); // 콘솔 출력을 확인하기 위해 대기합니다. 아무키나 누르면 프로그램이 종료됩니다. Console.ReadLine(); } static void AllLogOn(NGM.Interface.IMainView mv) { mv.IsOutput = true; mv.ShowApplicationOutput = true; mv.ShowConditionOutput = true; mv.ShowDebugOutput = true; mv.ShowDefaultOutput = true; mv.ShowFunctionOutput = true; mv.ShowHardwareOutput = true; mv.ShowKeyboardOutput = true; mv.ShowMemoryOutput = true; mv.ShowMouseOutput = true; mv.ShowTimeOutput = true; } private static void Mv_LogReceived(object sender, NGM.Events.LogWriteArgs e) { Console.WriteLine(e.Message); } } }

 

코드가 복잡해 보이지만, 디버깅을 위한 함수를 제외하면 그리 어려운 코드는 없습니다. 예제에서는 고양이 이미지를 찾아서 클릭하도록 처리 했습니다. 찾을 고양이 이미지를 먼저 만들어야겠죠? 아래와 같이 엔지엠 에디터를 실행하고, 메뉴의 파일 > 새로 만들기 > 이미지를 클릭하세요.

 

 

크롬을 실행하고, 구글로 이동합니다. 그리고, 고양이를 검색해보세요.

 

 

원본 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

반응형

댓글