파 이 썬 을 사용 하여 windows 데스크 톱 을 자동 으로 제어 하 는 방법
PC 를 사용 할 때 PC 와 상호작용 하 는 주요 경 로 는 화면 표시,소리 듣 기,마우스 클릭 과 키보드 두 드 리 기 등 이다.자동화 사무 추세 하에 서 번 거 로 운 일 은 절 차 를 자동 으로 완성 할 수 있다.예 를 들 어 자동화 테스트,자동 주문 거래 등 이다.많은 소프트웨어 들 이 GUI 방식 으로 조작 할 수 있 는 것 외 에 도 CLI 인터페이스 로 조작 할 수 있 지만,일부 소프트웨어 가 CLI 인 터 페 이 스 를 제공 하지 않 을 때 우 리 는 어떻게 해 야 합 니까?데스크 톱 의 창 을 프로그램 으로 제어 하고 마 우 스 를 모 의 클릭 하거나 키 보드 를 누 르 는 동작 으로 자신 을 풀 수도 있다.
pywin 32 는 Python 라 이브 러 리 로 Python 에 Windows API 를 방문 하 는 확장 을 제공 합 니 다.완 비 된 windows 상수,인터페이스,스 레 드,COM 메커니즘 등 을 제공 합 니 다.설치 후 python win 의 IDE 를 가 져 옵 니 다.다음은 파 이 썬 을 통 해 windows 데스크 톱 소프트웨어 를 조작 하 는 방법 을 소개 한다.
1.소프트웨어 나 파일 열기
예 를 들 어 구 글 브 라 우 저 를 열거 나 워드 파일 을 열 면 다음 과 같다.
win32api.ShellExecute(1, 'open',
r'C:Program Files (x86)GoogleChromeApplicationchrome.exe',
'', '', 1)
win32api.ShellExecute(1, 'open',
r'C:UsersJayDesktopEnvironment Guider.docx',
'', '', 1)
win32api.ShellExecute()의 매개 변 수 는 주로 다음 과 같 습 니 다.win 32 프로 그래 밍 의 세계 에서 창 에서 텍스트 상자 까지 의 모든 컨트롤 은 창 이 고 모든 창 은 독립 된 핸들 이 있 습 니 다.임의의 창 을 조작 하려 면 이 창의 핸들 을 찾 아야 합 니 다.핸들 은 windows 에서 대상 을 표시 하 는 데 사용 되 는 32 비트 정수 입 니 다.예 를 들 어 Snipping Tool 과 New Text Document.txt 의 핸들 을 찾 습 니 다.다음 과 같 습 니 다.
para_hld = win32gui.FindWindow(None, "Snipping Tool")# 1836416
para_hld = win32gui.FindWindow(None, "New Text Document.txt - Notepad")# 591410
win32gui.FindWindow()는 win32gui 모듈 에 속 합 니 다.맨 위 창(즉 데스크 톱)에서 조건 에 맞 는 창 을 검색 하고 이 창의 핸들 을 되 돌려 줍 니 다.이 함 수 는 주 창 만 찾 을 수 있 기 때문에 하위 창 을 검색 할 수 없고 대소 문자 도 구분 하지 않 으 며 찾 지 못 하면 0 으로 돌아 갑 니 다.win32gui.FindWindow()의 매개 변 수 는 주로(lpClassName=None,lpWindowName=None)을 포함한다.
3.핸들 의 클래스 이름과 제목 찾기
예 를 들 어 Snipping Tool 과 New Text Document.txt 의 핸들 을 통 해 해당 하 는 클래스 이름과 제목 을 찾 습 니 다.다음 과 같 습 니 다.
title = win32gui.GetWindowText(1836416)
classname = win32gui.GetClassName(1836416)
print "windows handler:{0}; title:{1}; classname:{2}".format(1836416, title, classname)
인쇄 화면 은 다음 과 같 습 니 다:
windows handler:1836416; title:Snipping Tool; classname:Microsoft-Windows-Tablet-SnipperToolbar
title = win32gui.GetWindowText(591410)
classname = win32gui.GetClassName(591410)
print "windows handler:{0}; title:{1}; classname:{2}".format(591410, title, classname)
인쇄 화면 은 다음 과 같 습 니 다:
windows handler:591410; title:New Text Document.txt - Notepad; classname:Notepad
4.win32gui.EnumWindows()를 호출 하여 모든 창 핸들 을 열거 합 니 다.마지막 최상 위 창 이 매 거 될 때 까지 매 거 진 과정 을 중단 합 니 다.다음 과 같다.
hWndList = []
win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hWndList)
print hWndList
for hwnd in hWndList:
title = win32gui.GetWindowText(hwnd)
print title
인쇄 화면 은 다음 과 같 습 니 다:
[852802L, 65946L, 65928L, 65930L, 65900L, 65920L, 65924L, 65922L, 65944L, 65892L, 65886L, 6817870L, 65960L, 6031410L, …… 66052L, 65734L]
……
New Text Document.txt - Notepad
Snipping Tool
DDE Server Window
OfficePowerManagerWindow
OfficePowerManagerWindow
DDE Server Window
GDI+ Window
Global Internet Access
……
5.win 32gui.SetForegroundWindow()함수 가 지정 한 창 을 맨 위 에 설정 하고 이 창 을 활성화 합 니 다.구조 함수:win32gui.SetWindowPos(HWN hwnd,HWND hwndlnsert After,int X,int Y,int cx,int cy,UNIT.Flags)
win32gui.SetForegroundWindow(parahld)잘못된 질문:
pywintypes.error: (0, ‘SetForegroundWindow', ‘No error message is available')
사실 SetForegroundWindow()를 호출 하 는 데 는 많은 제한 이 있 습 니 다.홈 페이지설명 하 다.를 참고 하 세 요.따라서 SetForegroundWindow()를 호출 할 때 현재 실행 중인 조건 이 상기 요구 에 부합 되 는 지 확인 해 야 합 니 다.SetForegroundWindow()를 호출 하기 전에 키보드 이 벤트 를 미리 보 내 서 이 문 제 를 해결 해 야 합 니 다.
예 는 다음 과 같다.
win32api.keybd_event(13, 0, 0, 0) #
win32gui.SetForegroundWindow(para_hld)
6、win32api.keybd_이벤트()아 날로 그 키보드 입력구조 함 수 는 다음 과 같다.
win32api.keybd_event (bVk, bScan, dwFlags, dwExtraInfo)
win32api.keybd_event(13,0,0,0) # enter
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0) #
7.마우스 입력 시 뮬 레이 션다음 과 같이 예 를 들 어 보 겠 습 니 다.
#
print win32api.GetCursorPos()
#
win32api.SetCursorPos((100, 100))
#
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 100, 100, 0, 0)
time.sleep(2)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 100, 100, 0, 0)
8.마우스 키보드 조작 은 PyUserInput 라 이브 러 리 도 사용 할 수 있 습 니 다.PyUserInput 은 python 의 크로스 플랫폼 을 사용 하여 마우스 와 키 보드 를 조작 하 는 모듈 로 사용 하기에 매우 편리 하 다.지원 하 는 플랫폼 과 의존 도 는 다음 과 같 습 니 다.
from pymouse import PyMouse
from pykeyboard import PyKeyboard
m = PyMouse()
k = PyKeyboard()
, :
m.click(190,70,1)# xy
time.sleep(2)
m.click(190, 200, 1)# xy
time.sleep(2)
k.tap_key(k.function_keys[5])#C F5
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.