Python Win32 向 Chrome 发送击键

标签 python google-chrome winapi

我正在尝试在 Windows 中运行 python 脚本以发送 F5命令 Google Chrome v53 window 。但不幸的是什么也没有发生。但它就像 Internet Explorer v11 的魅力(更改 Class Name 后)。

  • Winspector detects the Class Name of the Google Chrome window
  • Python 找到窗口并发送命令
  • 没有消息被记录为发送到进程

  • Python代码
    import win32gui, win32api, win32con
    hwnd = win32gui.FindWindow("Chrome_WidgetWin_1", None)
    print hwnd
    # Sending command to the main windows also does not work
    win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F5, 0)
    hwnd = win32gui.FindWindowEx(hwnd, None, "Chrome_RenderWidgetHostHWND", None)
    print hwnd
    win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F5, 0)
    

    python 输出
    1181972
    0
    

    编辑:包括隐藏窗口

    There seems to be more windows, that have the same Class Name .因此,我现在不仅搜索 Class Name ,也由Text .第一次尝试只找到了一个没有 child 的 window 。因此输出的第二行有一个 0 .

    改变的 Python 代码
    import win32gui, win32api, win32con
    hwnd = win32gui.FindWindow("Chrome_WidgetWin_1", "Stack Overflow - Google Chrome")
    print hwnd
    # Sending command to the main windows also does not work
    win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F5, 0)
    hwnd = win32gui.FindWindowEx(hwnd, None, "Chrome_RenderWidgetHostHWND", None)
    print hwnd
    win32api.PostMessage(hwnd, win32con.WM_KEYDOWN, win32con.VK_F5, 0)
    

    python 输出
    1247302
    1509536
    

    编辑:SetForegroundWindow解决方案

    问题的解决方法是先通过win32gui.SetForegroundWindow(Handle)将窗口设置为前台。方法,然后发送按键命令。

    但是,仍然没有命令传递到窗口,网站也没有刷新。

    最佳答案

    你可以用这个

    import pyautogui
    pyautogui.hotkey('f5')
    
    这将模拟您的刷新键,将信号发送到 chrome。
    如果您不希望 chrome 窗口处于事件状态,那么当您启动 chrome 时,通过在命令提示符中键入以下内容来启动它:
    start /B chrome.exe
    
    然后关闭 Chrome 。它将在后台运行。工作完成后,转到任务管理器并关闭 chrome。
    或者您可以转到 Chrome>Advanced>System 并查看第一个选项。

    关于Python Win32 向 Chrome 发送击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39698432/

    相关文章:

    html - Chrome 不尊重零宽度连接器

    c++ - 如何找到激活时打开给定 HMENU 的菜单项(如果有)?

    python - 如何在 Canopy 的 IPython qtconsole 中使用 Sympy 打印 Latex?

    python - 如何运行安装了多个 python 版本的脚本?

    google-chrome - CSS box-shadow 在 Firefox 和 Chromium 上呈现不同

    google-chrome - 在将 scrollTop 动画化到窗口 onLoad 中的较低位置后,Chrome 跳回页面顶部

    delphi - 我如何将 WNDPROC 转换为 TWndMethod

    c++ - 使用 WriteFile 填充集群

    为具有唯一长度的元素过滤列表的pythonic方法

    python - 在 Django 模型表单集中设置每个表单的实例