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