当前位置: 首页 > 工具软件 > PythonWin > 使用案例 >

python win32gui 自动化点击简单实例

秦渝
2023-12-01

有些机械性的重复操作可以通过脚本直接替代。

节省时间,且可以持续进行。就如上传文件的时候,总会遇到提示文件重名即替换文件等提示框弹出;

所以有检查应用中是否存在该窗口然后若有则自动点击相应的选项,或则输入快捷键。

通过查阅资料发现可以使用相应的一些库进行操作

如pywin32中的win32con (相关的一些参数以及变量),win32gui(主要用于查找窗口),win32api(windows上的接口);

就如当文件夹下有重复文件的时候,就会弹出替换文件提示。一般操作我们可以通过点击,快捷键等方式进行选择。

接下来会使用Alt + R就行快捷键使用简单例子:

import os
count = 0
from time import sleep
if not os.path.exists(r'.\a.txt'):#检查是否存在文件a.txt,作为启动器
    with open(r'.\a.txt', 'w') as f:
        status = f.write('start')
while True:#循环判断
    with open(r'.\a.txt', 'r') as f:
        status = f.read()
    print(status)
    sleep(2)    
    if status in ['start']:

        hwnd = win32gui.FindWindow(None,"替换或跳过文件")
        #通过窗口名字获取句柄
        if hwnd:

            win32gui.SetForegroundWindow(hwnd)
            #ALt + R
            win32api.keybd_event(0x12,0,0,0)
            win32api.keybd_event(0x52,0,0,0)
            win32api.keybd_event(0x12,0,win32con.KEYEVENTF_KEYUP,0)
            win32api.keybd_event(0x52,0,win32con.KEYEVENTF_KEYUP,0)
            
#             sleep(0.2)
            
            #键入Enter键
#             win32api.keybd_event(13,0,0,0)
#             win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)
            count = 0
        #另一种情况:
        hwnd1 = win32gui.FindWindow(None,"???")
        if hwnd1:
            pass
            
            
    else:

        print("break")
        break

可以通过循环来达到不停的检验是否存在改应用窗口的方式。

获取所用应用的句柄及名称

hwnd_title = {}

def get_all_hwnd(hwnd, mouse):
    if (win32gui.IsWindow(hwnd)
            and win32gui.IsWindowEnabled(hwnd)
            and win32gui.IsWindowVisible(hwnd)):
        hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})

title_list = []
win32gui.EnumWindows(get_all_hwnd, 0)#枚举
for h, t in hwnd_title.items():
    if t :
        title_list.append(t)
        print(h, t)

枚举所有窗口的名称。

 类似资料: