![](/img/trans.png)
[英]Using Python pywin32 to send keystrokes to interactive win32 console application
[英]Python Win32 send keystrokes to Chrome
我正在嘗試在 Windows 中運行 python 腳本以將F5
命令發送到Google Chrome v53
窗口。 但不幸的是什么也沒有發生。 但它對Internet Explorer v11
作用就像一個魅力(在更改Class Name
)。
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)
蟒蛇輸出
1181972
0
編輯:包括隱藏的窗口
似乎有更多的窗口,它們具有相同的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)
蟒蛇輸出
1247302
1509536
編輯: SetForegroundWindow
解決方案
問題的解決方法是先通過win32gui.SetForegroundWindow(Handle)
方法將窗口設置為前台,然后發送按鍵命令。
但是,仍然沒有命令傳遞到窗口,網站也沒有刷新。
你可以用這個
import pyautogui
pyautogui.hotkey('f5')
這將模擬您的刷新鍵,將信號發送到 chrome。
如果您不希望 chrome 窗口處於活動狀態,那么當您啟動 chrome 時,通過在命令提示符中鍵入以下內容來啟動它:
start /B chrome.exe
然后關閉鉻。 它將在后台運行。 工作完成后,轉到任務管理器並關閉 chrome。
或者您可以轉到 Chrome>Advanced>System 並查看第一個選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.