python win 32 간단 한 조작 방법

7309 단어 pythonwin32
유래
처음에는 친구 에 게 왕 신 을 조작 하 는 버튼 요정 의 스 크 립 트 를 만들어 주 었 습 니 다.다 쓴 후에 여러 가지 불안정 이 있 었 습 니 다.나중에 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 간단 한 조작 방법 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 하 실 수 있 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기