Python Win32向Chrome发送击键

时间:2016-09-26 08:52:46

标签: python google-chrome winapi winspector

我正在尝试在Windows中运行python脚本以将F5命令发送到Google Chrome v53窗口。但遗憾的是没有任何反应。但它与Internet Explorer v11的魅力相似(在更改Class Name之后)。

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。第一次尝试只找到一个没有任何孩子的窗口。因此,输出的第二行有一个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)方法将窗口设置为前景,然后发送键命令。

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

1 个答案:

答案 0 :(得分:0)

您可以使用此

import pyautogui
pyautogui.hotkey('f5')

这将模拟您的刷新键,并将信号发送到chrome。
如果您不希望启用chrome窗口,那么当您启动chrome时,请在命令提示符下键入以下内容以启动它:

start /B chrome.exe

然后关闭镶边。它将在后台运行。工作完成后,转到任务管理器并关闭chrome。
或者,您可以转到Chrome>高级>系统,然后查看第一个选项。