매크로 프로그램 다운로드
https://autopeak.co.kr
#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #지존오토 #엔지엠에디터 #엔지엠플레이어 #오토핫키 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #이미지맥스 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화
# Python으로 배우는 화면 자동화 프로그래밍 - 마우스 좌표 저장/불러오기
안녕하세요! 오늘은 Python을 사용해서 화면 상의 특정 좌표를 저장하고 불러오는 프로그램을 만들어보려고 합니다. 이런 기술은 UI 자동화나 테스트 자동화에 활용될 수 있는 유용한 기술입니다.로스트아크에서 낚시는 굉장히 귀찮은 컨텐츠중 하나인 것 같습니다.
하지만, 다른 생활에 비해 쉬워서 많은 사람들이 낚시를 선택하시는 것 같습니다. 난이도는 쉽지만 그래도 시간이 많이 들어가는 종목이죠 .. 사실 로아에서 하루에 할 숙제가 얼마나 많이 있습니까 .. 카던, 레이드, 플필, 큐브, 보물지도, 에포나 등등등 이렇게나 할게 많은데 직장인들 바쁜 사람들은 생활을 할 시간이 어디 있겠어요.
이 내용은 화면 인식과 움직이는 이미지를 찾아서 마우스 좌표를 클릭하는 아주 기초적인 내용만 담고 있습니다. 실제로 chatgpt와 같은 인공지능에게 낚시 매크로를 만들어달라고 하면 이와 동일하게 코딩을 해줍니다.
아무래도 파이썬 코딩이다보니 개발자들이야 쉽게 내용을 이해하고 사용할 수 있겠지만, 이런 내용을 알 수 없는 일반인이라면 좀 더 디테일하게 인공지능을 사용해야 합니다. 개발 환경을 어떻게 만들어야 하는지부터 하나씩 질문하면서 따라해야 합니다. 이런 전처리와 배포 관련된 후처리에도 많은 시간이 소요되기 때문에 엔지엠 매크로나 오토픽 매크로와 같은 노코딩 매크로 제작 도구를 많이 사용하고 있습니다.
## 필요한 라이브러리
우선 필요한 라이브러리들을 설치해보겠습니다:
```bash
pip install configparser
pip install keyboard
pip install mouse
```
각 라이브러리의 역할은 다음과 같습니다:
- configparser: 설정 파일을 쉽게 관리할 수 있게 해주는 라이브러리
- keyboard: 키보드 이벤트를 감지하고 제어하는 라이브러리
- mouse: 마우스 위치를 확인하고 제어하는 라이브러리
## 프로그램 구조 설계
먼저 프로젝트 폴더 구조를 다음과 같이 만듭니다.
반복적인 행위를 Python 으로 쉽게 해결하기 위해 아래와 같은 방법을 생각했습니다.
```
/project
├── pointer_save.py
└── init.txt
```
## 핵심 기능 구현
특정 키(F12)를 눌렀을 때 마우스 좌표를 가져오는 기능부터 구현해보겠습니다.
- 생활 스킬 변경(수동으로)
- 모니터 상의 물가 좌표를 미리 받아와서 마우스를 그 좌표로 이동
- ‘w’ 를 누르도록 명령
- 반복적으로 화면 중앙에 느낌표가 생기는지 확인
- 느낌표를 검출하는 순간 ‘w’ 를 누르도록 명령
- 2 ~ 5번을 반복
이 내용만으로도 대략 어떻게 만들어야 할지 감이 올겁니다.
대부분의 엔지엠 매크로 사용자분들이 이런식으로 액션을 조합해서 사용하고 있는거 같아요.
```python
import os
import configparser
import mouse as mo
import keyboard as key
from ast import literal_eval
def getMousePointWithKey(cnt):
"""F12 키를 누르면 현재 마우스의 좌표를 반환하는 함수"""
state = False
returnList = []
tcnt = 0
while True:
val = key.is_pressed('F12')
if state != val:
if val == True:
tcnt += 1
returnList.append(mo.get_position())
print(f'Point {tcnt} Captured')
state = val
if tcnt >= cnt:
return returnList
def writeOptionOnConfig(section, option, val):
"""설정 파일에 섹션과 옵션을 저장하는 함수"""
configFile = os.path.dirname(os.path.realpath(__file__)) + '\\' + 'init.txt'
config = configparser.ConfigParser()
config.read(configFile)
if section not in config.sections():
config.add_section(section)
config[section][option] = val
with open(configFile, 'w') as config_file:
config.write(config_file)
def writePoints(location_name):
"""위치 이름과 함께 좌표들을 저장하는 함수"""
points = getMousePointWithKey(3)
prefix_location = 'point_' + location_name
for i, pos in enumerate(points):
opt = f'point{i+1}'
print(f'{opt}: {pos}')
writeOptionOnConfig(prefix_location, opt, str(pos))
def getLocationList():
"""저장된 모든 위치 목록을 반환하는 함수"""
configFile = os.path.dirname(os.path.realpath(__file__)) + '\\' + 'init.txt'
locations = []
try:
config = configparser.ConfigParser()
config.read(configFile)
for section in config.sections():
if section.startswith('point_'):
locations.append(section)
return locations, config
except Exception as e:
print(f'Error: {str(e)}')
return [], None
def getPointsList():
"""특정 위치의 모든 저장된 좌표를 반환하는 함수"""
locations, config = getLocationList()
points = []
if not locations:
return points
print("\n저장된 위치 목록:")
for idx, location in enumerate(locations):
print(f"{idx}. {location}")
try:
index = int(input("\n위치 번호를 선택하세요: "))
if 0 <= index < len(locations):
if config:
selected_location = locations[index]
for option in config[selected_location]:
points.append(literal_eval(config[selected_location][option]))
return points
else:
print("잘못된 번호입니다.")
return []
except ValueError:
print("숫자를 입력해주세요.")
return []
if __name__ == "__main__":
while True:
print("\n1. 새로운 좌표 저장")
print("2. 저장된 좌표 불러오기")
print("3. 종료")
choice = input("선택하세요: ")
if choice == "1":
location_name = input("위치 이름을 입력하세요: ")
print("마우스를 원하는 위치로 이동하고 F12를 눌러주세요 (3개의 포인트)")
writePoints(location_name)
elif choice == "2":
points = getPointsList()
if points:
print("\n저장된 좌표:")
for i, point in enumerate(points, 1):
print(f"포인트 {i}: {point}")
elif choice == "3":
break
else:
print("잘못된 선택입니다.")
```
## 프로그램 사용 방법
1. 새로운 좌표 저장하기:
- 프로그램 실행 후 '1' 선택
- 위치 이름 입력 (예: "workspace1")
- 마우스를 원하는 위치로 이동하고 F12 키를 3번 눌러 좌표 저장
2. 저장된 좌표 불러오기:
- '2' 선택
- 저장된 위치 목록에서 번호 선택
- 해당 위치의 저장된 좌표들 확인
## 주요 특징
- 여러 개의 좌표 세트를 각각 다른 이름으로 저장 가능
- 설정 파일(init.txt)을 통한 영구적인 데이터 저장
- 직관적인 콘솔 인터페이스
- 에러 처리를 통한 안정적인 동작
## 활용 방안
이 프로그램은 다음과 같은 상황에서 활용될 수 있습니다:
- UI 테스트 자동화
- 반복적인 마우스 작업 자동화
- 화면 좌표 기반 매크로 개발
- 프로그램 테스트 자동화
## 주의사항
프로그램을 실행할 때는 반드시 관리자 권한으로 실행해야 합니다. 이는 키보드와 마우스 이벤트를 후킹하기 위해 필요합니다. 게임에 매크로를 사용하는 경우 문제가 될 수 있습니다. 매크로를 공부하기 위한 연습용으로만 사용하세요.
## 마무리
이상으로 Python을 이용한 낚시 찌 인식과 물가 인식 그리고, 타이밍에 키보드 w나 마우스를 조작하는 방법에 대해 알아봤습니다. 파이썬을 이용해서 간단하게 처리할 수 있지만, 코딩을 모르는 경우에는 이 내용도 어려울 수 있습니다. 쉽게 매크로를 만들 수 있는 엔지엠 매크로나 오토픽 매크로를 사용해보는 것도 좋은 방법입니다. 범용적인 RPA 매크로 도구라서 단순 PC 게임이나 모바일 게임뿐만 아니라 광범위하게 업무용으로 사용할 수 있습니다. 마케팅이나 쇼핑몰을 운영중이라면 한번 사용 해보세요.^^
다음에는 이 프로그램을 확장하여 이미지 인식 기능을 추가하는 방법에 대해 다뤄보도록 하겠습니다.
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
댓글