大家好,欢迎来到IT知识分享网。
打开应用使用到win32api
import win32con
import win32gui
import time
from time import sleep
import win32api
import win32com.client
win32api.ShellExecute(1, 'open', '%s'%app_path, '', '', win32con.SW_SHOW)
首先获取应用的句柄
win32gui.FindWindow(None, "Main") #类名,标题
# 可以通过再次判断是否存在该句柄
while not MainWin: # 强制获取句柄,如无意外的话,可以添加次数控制,或时间控制
MainWin = win32gui.FindWindow(None, "Main") # 类名,标题
获取应用后将应用置顶层
shell = win32com.client.Dispatch("WScript.Shell")# 创建一次即可
#如多次创建后或将致使程序崩溃, Dispatch 用调用到线程。
shell.SendKeys('%')# 使用SetForegroundWindow前要进行键入操作
win32gui.SetForegroundWindow(MainWin) # 句柄,置为第一层
遍历子窗口
hwndChildList1 = []
win32gui.EnumChildWindows(hwnd, lambda hwnd, param: param.append(hwnd), hwndChildList1)
print(hwndChildList1)# 遍历获取子控件及窗口
for i in hwndChildList1:
print(i)# 控件
print(win32gui.GetWindowText(i))# 句柄的名称
print(win32gui.GetClassName(i))# 句柄的类名
text = win32gui.GetWindowText(i)
#
传回按键
# OK_hwnd 找到句柄后 传入按键Enter
win32gui.PostMessage(OK_hwnd, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
win32gui.PostMessage(OK_hwnd, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
# 关闭
win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
win32gui.PostMessage(Main_hwnd, win32con.WM_CLOSE, 0, 0)
使用鼠标点击
def mouse_click(a, b):
# x,y
time.sleep(1)
win32api.SetCursorPos((a, b))
time.sleep(1)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) # 360会拦截虚拟按键,可以添加信任或者关闭360
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
COMBOBOX与EDIT的选择
# 应用于Combox类的选项
item_index = 1 # 索引值是从0开始的,这里是第3项
win32api.SendMessage(combox_hwnd , win32con.CB_SETCURSEL, item_index, 0)
for i in hwndChildList1:
print(i)
print(win32gui.GetWindowText(i))
print(win32gui.GetClassName(i))
Clstext = win32gui.GetClassName(i)
text = win32gui.GetWindowText(i)
if "COMBOBOX" in Clstext:
combox_hwnd = i
item_index = 1 # 索引值是从0开始的,这里是第3项
win32api.SendMessage(i, win32con.CB_SETCURSEL, item_index, 0)
if "EDIT" in Clstext:# EDIT文本框
count_edit +=1
if count_edit ==1:
win32gui.SendMessage(i,win32con.WM_SETTEXT,None,end_date)
else:
win32gui.SendMessage(i,win32con.WM_SETTEXT,None,start_date)
过程主要是模拟人手点击的过程,
从打开应用,填入相应信息点击导出再到保存路径,最后保存。
每一步如若涉及到新的窗口需要重新获取句柄,且读取获取句柄下的子控件且子窗口的句柄,获取相应text及class 类在根据相应需求的句柄进行填写,
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15827.html