본문 바로가기
매크로

매크로 프로그램

by 백수아저씨 2025. 4. 20.
반응형

매크로 프로그램 다운로드

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #오토핫키 #지존오토 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #이미지맥스 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화

 

안녕하세요. 업무 자동화 RPA 매크로 엔지엠소프트웨어입니다.

우선, 아래 1부 내용을 참고하셔서 전체 사각형 영역을 찾아내야 합니다.

[ 1부 내용 보기 ]

 

1부에서 테스트로 만든 스크립트를 열어보면 아래와 같이 구성되어 있을겁니다.

핵심은 유사 거리로 중복되게 찾은 오브젝트들을 모두 제거해야 한다는 것입니다.

컴퓨터 환경에 따라 다르겠지만, 제 컴퓨터 기준으로 모든 사각형을 찾으려면 임계값을 1000으로 입력해야 했습니다.

임계값은 컴퓨터 모니터의 해상도에 따라서 값이 달라질 수 있습니다.

 

 

 

찾은 모든 좌석 사각형은 배열 형태로 사각형 영역을 가집니다.

사각형 영역은 위치와 크기로 이루어진 정보입니다.

 

변수에 저장된 배열을 문자열로 변환하기 위해 배열 변환 액션을 사용합니다.

구분자는 임의로 설정할 수 있지만, 이 예제와 동일하게 입력하세요.

 

 

 

이제 좌석을 의미하는 사각형의 위치를 배열로 가지고 있는것을 사용하기 쉽게 테이블 형태로 변환해야 합니다.

물론, 더 좋은 아이디어가 있을수도 있지만 제가 생각하기에는 쭉 나열되어 있는 배열보다 테이블 형태가 좋을듯 합니다.

단순 1차원 배열은 모든 좌표가 쭉 순서대로 있기 때문에 2차원 배열 형태로 처리하기가 쉽지 않습니다.

그래서, 테이블 구조를 가진 2차원 배열로 만들어야 하는데요.

이 로직을 액션으로 만들기가 어렵기 때문에 어쩔 수 없이 코드의 도움을 받아야 합니다.

 

C# 코드 실행 액션을 추가하고 아래와 같이 코드를 작성 하세요.

using System;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;

public class NGMsoftware
{
    private int _rowSize = 1;

    public string Points()
    {
        var arrSource = "{point}"
                        .Replace("{", string.Empty)
                        .Replace("}", string.Empty)
                        .Replace("X=", string.Empty)
                        .Replace("Y=", string.Empty)
                        .Replace("Width=", string.Empty)
                        .Replace("Height=", string.Empty)
                        .Replace(" ", string.Empty)
                        .Split('^');

	    var arrRect = arrSource.Select(s => StringToRect(s));
	    List<List<Rectangle>> table = new List<List<Rectangle>>();
	    List<Rectangle> rects = null;
	    int beforeRowSize = 0;
	
		foreach (var rect in arrRect)
		{
			if (beforeRowSize == 0)
			{
				beforeRowSize = rect.Y;
				rects = new List<Rectangle>();
			}

			if (rect.Y - beforeRowSize > _rowSize)
			{
				table.Add(rects);
				beforeRowSize = rect.Y;
				rects = new List<Rectangle>();
				rects.Add(rect);
			}
			else
			{
				rects.Add(rect);
			}
		}

        table.Add(rects);

		string result = string.Empty;

        foreach (var rs in table)
		{
			result += string.Join("@", rs.Select(s => RectToPoint(s)));
			result += Environment.NewLine;
		}

		return result;
    }

    public Rectangle StringToRect(string str)
    {
		var ls = str.Split(',');
		return new Rectangle(int.Parse(ls[0]), int.Parse(ls[1]), int.Parse(ls[2]), int.Parse(ls[3]));
    }

    public string RectToPoint(Rectangle rect)
    {
		int w = rect.Width / 2;
		int h = rect.Height / 2;
		return (w + rect.X).ToString() + "," + (h + rect.Y).ToString();
    }
}

 

코드는 나열되어 들어오는 사각형 자료형을 사용하기 쉽게 먼저 가공합니다.

Replace를 이용해서 불필요한 텍스트는 모두 제거했습니다.

코딩을 배우는건 아니라서 대략적인 내용만 보고 넘어가시는게 좋을듯 합니다.

만약, C# 코딩에 대해 궁금하신게 있거나 배워보고 싶으면 아래 C# 코딩 강좌를 참고하세요.

[ C# 코딩 기초 강좌 ]

 

매크로를 실행하고 결과를 확인 해보세요.

아래는 테이블 형태로 변환된 좌표를 뽑아서 메모장에 넣어본 화면입니다.

메모장에 들어간 내용을 위의 좌석과 비교해보면 비슷한 모양을 하고 있다는걸 알 수 있습니다.

 

 

 

여기서 몇번째 행에서 좌측 또는 우측에서 몇개만 추출하도록 코드를 수정해볼께요.

아래와 같이 테이블을 모두 조인시켜주는 곳에서 6번째 행에서 왼쪽 5개를 가져오도록 수정했습니다.

	string result = string.Empty;

	var rows = table[5];
	var cells = rows.Take(5).ToList();
	result = string.Join("@", cells.Select(s => RectToPoint(s)));
	return result;
    }

    public Rectangle StringToRect(string str)
    {
	var ls = str.Split(',');
	return new Rectangle(int.Parse(ls[0]), int.Parse(ls[1]), int.Parse(ls[2]), int.Parse(ls[3]));
    }

    public string RectToPoint(Rectangle rect)
    {
	int w = rect.Width / 2;
	int h = rect.Height / 2;
	return (w + rect.X).ToString() + "," + (h + rect.Y).ToString();
    }
}

 

매크로를 다시 실행하고 결과를 확인해보면 아래와 같이 결과가 만들어집니다.

 

 

 

변수를 하나 더 추가하고, point 변수에 저장되어 있는 텍스트로 된 좌표 목록을 @ 키워드로 분리해서 배열화합니다.

그리고, 다시 point 변수에 덮어쓰기 해줍니다.

 

 

 

Foreach 반복 액션을 사용해서 배열을 순차적으로 반복시킵니다.

여기까지 완료한 후 첨부되어 있는 스크립트를 열어서 테스트 해보세요.

https://youtu.be/HXqDd8cpBgI

 

 

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

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

 

원본 글 보기

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

 

엔지엠소프트웨어

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

www.ngmsoftware.com

 

반응형

'매크로' 카테고리의 다른 글

vpn 아이피 자동 변경  (0) 2025.04.20
오토핫키 자동입력  (0) 2025.04.20
오토핫키 키보드  (1) 2025.04.20
웹페이지 텍스트 전체 추출  (1) 2025.04.17
오토마우스 자동클릭커 설정  (0) 2025.04.17

댓글