win32gui 自动点击

本文介绍了一个用Python编写的脚本,通过win32gui模块实现对特定窗口(如网易云游戏-光遇)的监控,保持其在前台活跃状态,每隔一段时间自动切换焦点并按下T键。
部署运行你感兴趣的模型镜像
import time
import win32con
import keyboard

import pywintypes  # Not used, but need it for win32gui to import correctly
import win32gui

id(pywintypes)


def keep_game_awake(handles: set):
    for n in range(60 * 24):
        for handle in list(handles):
            try:
                foreground = win32gui.GetForegroundWindow()
                if not foreground:
                    raise Exception('foreground', foreground)

                if foreground != handle:
                    # win32gui.ShowWindow(handle, win32con.SW_MAXIMIZE)
                    win32gui.ShowWindow(handle, win32con.SW_MINIMIZE)
                    # win32gui.SetActiveWindow(handle)
                    win32gui.SetForegroundWindow(handle)

                keyboard.press_and_release('T')

                if foreground != handle:
                    win32gui.SetForegroundWindow(foreground)

            except Exception as e:
                print(handle, e.args)
                if len(e.args) >= 3 and ('No error message is available' != e.args[2]):
                    handles.remove(handle)
            finally:
                time.sleep(3)

        if not len(handles):
            print('exit the loop')
            break

        time.sleep(60)


#def debug():
#    handles = set(filter(
#        lambda handle: handle > 0,
#        map(lambda title: win32gui.FindWindowEx(None, None, None, title), ['title1', #'title2']),
#    ))
#
#    print(handles)
#
#    win32gui.SetWindowText(
#        win32gui.FindWindowEx(None, None, None, '[#] 网易云游戏-光遇-菜单键:Esc [#]'), '[#] 光遇 - 2 [#]'
#    )


def get_win_handles(titles: list):
    def _ew_callback(handle, ref_result):
        title = win32gui.GetWindowText(handle)
        if title and (title in titles):
            ref_result.append((handle, title))

    result = []
    win32gui.EnumWindows(_ew_callback, result)

    for res in result:
        print(*res)

    return set(map(lambda t: t[0], result))


if __name__ == '__main__':
    keep_game_awake(get_win_handles([
        '网易云游戏-光遇-菜单键:Esc',
        '[#] 网易云游戏-光遇-菜单键:Esc [#]',
        '[#] 网易云游戏-光遇(小米)-菜单键:Esc [#]',
    ]))


您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值