win32gui 自动点击

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 [#]',
    ]))


  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用win32gui模块和win32api模块来模拟鼠标右键点击和选择“专用”选项。 以下是可能的解决方案: ``` import win32api import win32gui import win32com.client as win32 # 创建 Word 应用程序 app = win32.Dispatch("Word.Application") doc = app.Documents.Add() app.visible = True s = app.Selection objRange = s.Range # 插入公式 c1 = 10 c2 = 12 y1 = 'y=\\sqrt(a^2+b)=' + str(c1) + '+' + str(c2) + '=' + str(c1 + c2) + '^p' objRange.Text = y1 objRange = s.OMaths.Add(objRange) # 定位公式 hwnd = win32gui.FindWindowEx(0, 0, "OpusApp", None) hwnd = win32gui.FindWindowEx(hwnd, 0, "OpusApp", None) hwnd = win32gui.FindWindowEx(hwnd, 0, "OpusApp", None) hwnd = win32gui.FindWindowEx(hwnd, 0, "OpusApp", None) hwnd = win32gui.FindWindowEx(hwnd, 0, "OpusApp", None) hwnd = win32gui.FindWindowEx(hwnd, 0, "OpusApp", None) # 获取公式矩形区域 rect = win32gui.GetWindowRect(hwnd) # 计算鼠标右键点击位置 x = rect[0] + (rect[2] - rect[0]) // 2 y = rect[1] + (rect[3] - rect[1]) // 2 # 模拟鼠标右键点击 win32api.SetCursorPos((x, y)) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, x, y, 0, 0) win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, x, y, 0, 0) # 模拟选择“专用”选项 hwndMenu = win32gui.FindWindow("#32768", "Context") hwndMenuItem = win32gui.FindWindowEx(hwndMenu, 0, None, "专用") win32gui.PostMessage(hwndMenu, win32con.WM_COMMAND, hwndMenuItem, 0) ``` 注意,这段代码的实现前提是您的Word版本支持公式编辑器,并且您需要将文档保存为“.docx”格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值