python win 32 간단 한 조작 방법
처음에는 친구 에 게 왕 신 을 조작 하 는 버튼 요정 의 스 크 립 트 를 만들어 주 었 습 니 다.다 쓴 후에 여러 가지 불안정 이 있 었 습 니 다.나중에 python 이 win 32 와 관련 된 api 를 조작 할 수 있 는 것 을 보 았 습 니 다.마침 그 동안 python 을 배우 고 있 었 습 니 다.연습 할 때 가 된 것 같 습 니 다~~~
다운로드 하 다.
Python 버 전과 자릿수 에 주의해 야 합 니 다.그렇지 않 으 면 설치 에 실패 할 것 입 니 다.
위 주소 로 직접 가서 적당 한 버 전 을 찾 아 설치 하 십시오.다른 도구 가 포함 되 어 있 습 니 다.
다운로드 한 것 은 이미 실행 가능 한 파일 이 므 로 직접 실행 하면 됩 니 다.
https://sourceforge.net/projects/pywin32/
핸들 가 져 오 는 방법VC 또는 VS 도구 에 SPY++를 가 져 오 면 핸들 정 보 를 얻 을 수 있 습 니 다.이것 은 없습니다.다음 을 보십시오.
맞아요.바로 버튼 요정 이에 요.
쓰다
검색 핸들
# ,
hwnd = win32gui.FindWindow("Tfrm_YzzPlayer"," ")
# , , , None
hwnd = win32gui.FindWindow(hwnd,None,"sub_class","sub_title")
창 크기 변경
# , , , , , , , , , ; , ,
win32gui.MoveWindow(hwnd,20,20,405,756,True)
무대 뒤
# ,
win32gui.SetForegroundWindow(hwnd)
#
win32gui.SetBkMode(hwnd, win32con.TRANSPARENT)
버튼
# win32gui win32api , , , PostMessage SendMessage , SendMessage , , PostMessage , ,
# : , ( ), ( win32con , , ASII , A 65 ), ( win32api.MAKELONG(x,y) ;
# ,
# , Enter , , KEYDOAWN KEYUP , ,
# win32gui.PostMessage(tid, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
# win32gui.SendMessage(tid, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32api.SendMessage(hwd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)
win32api.PostMessage(hwd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)
소식 을 보내다입력 상자 의 핸들 을 찾 아 키 종 류 를 SETTEXT 로 설정 하 는 두 가지 방법 이 있 습 니 다.
또 다른 방식 은 입력 해 야 할 내용 을 스티커 판 에 넣 고 직접 붙 여 넣 으 면 된다.
# , , ,
win32gui.SendMessage(tid, win32con.WM_SETTEXT,None,‘hello')
# , , ctrl + v , ,
# , ,
def getText():
#
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return d
def setText(aString):
#
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_TEXT, aString.encode(encoding='gbk'))
w.CloseClipboard()
코드 예제다음 코드 기능 은 한 텍스트 에서 모든 줄 의 기록 을 읽 은 다음 안 드 로 이 드 시 뮬 레이 터 의 왕 편지 에서 연락 처 를 조회 하여 지정 한 내용 의 메 시 지 를 보 내 는 것 입 니 다.
# coding: utf-8
import win32gui, win32api, win32con
import time
import win32clipboard as w
import logging
def click_position(hwd, x_position, y_position, sleep):
"""
:param hwd:
:param x_position:
:param y_position:
:param sleep:
:return:
"""
# 16 32
long_position = win32api.MAKELONG(x_position, y_position)
# win32api.SendMessage(hwnd, win32con.MOUSEEVENTF_LEFTDOWN, win32con.MOUSEEVENTF_LEFTUP, long_position)
#
win32api.SendMessage(hwd, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, long_position)
win32api.SendMessage(hwd, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, long_position)
time.sleep(int(sleep))
def getText():
#
w.OpenClipboard()
d = w.GetClipboardData(win32con.CF_TEXT)
w.CloseClipboard()
return d
def setText(aString):
#
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_TEXT, aString.encode(encoding='gbk'))
w.CloseClipboard()
def input_content(hwd, content, sleep, is_enter):
"""
:param hwd:
:param content:
:param sleep:
:param is_enter enter , enter
:return:
"""
setText(content)
time.sleep(0.3)
click_keys(hwd, win32con.VK_CONTROL, 86)
if is_enter:
time.sleep(1)
click_keys(hwd, win32con.VK_RETURN)
time.sleep(sleep)
def click_keys(hwd, *args):
"""
:param hwd:
:param args:
:return:
"""
for arg in args:
win32api.SendMessage(hwd, win32con.WM_KEYDOWN, arg, 0)
for arg in args:
win32api.SendMessage(hwd, win32con.WM_KEYUP, arg, 0)
def wangwang_operation(hwd, salesname, content1, content2):
"""
:param hwd:
:param salesname:
:param content1:
:param content2:
:return:
"""
#
click_position(hwd, 200, 685, 2)
#
click_position(hwd, 372, 44, 3)
#
input_content(hwd, salesname, 3, False)
#
click_position(hwd, 345, 117, 5)
#
click_position(hwd, 350, 700, 3)
#
input_content(hwd, content1, 1, False)
click_keys(hwd, win32con.VK_CONTROL, win32con.VK_RETURN)
time.sleep(1)
input_content(hwd, content2, 1, False)
click_keys(hwd, win32con.VK_CONTROL, win32con.VK_RETURN)
time.sleep(1)
#
click_position(hwd, 20, 45, 1)
time.sleep(1)
click_position(hwd, 20, 45, 1)
def wangwang_operation_by_file(hwd, file, content1, content2):
with open(file, 'r') as f:
line = f.readline()
while len(line) >= 1:
try:
line = line.replace('\r', '').replace('
', '')
print(" %s ....................................." % line)
wangwang_operation(hwd, line, content1, content2)
line = f.readline()
except BaseException as e:
print(" %s ............." % line)
logging.exception(e)
if __name__ == "__main__":
#
hwnd = win32gui.FindWindow("Tfrm_YzzPlayer", " ")
if int(hwnd) <= 0:
print(" , ................")
exit(0)
print(" : %s " % hwnd)
win32gui.MoveWindow(hwnd, 20, 20, 405, 756, True)
time.sleep(2)
#
# print(win32gui.ScreenToClient(hwnd, (1446, 722)))
#
# win32gui.SetForegroundWindow(hwnd)
#
win32gui.SetBkMode(hwnd, win32con.TRANSPARENT)
time.sleep(2)
# :
wangwang_operation_by_file(hwnd, "D:/2.txt", " ", " ")
이상 의 python win 32 간단 한 조작 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.