簡體   English   中英

Python Win32 向 Chrome 發送擊鍵

[英]Python Win32 send keystrokes to Chrome

我正在嘗試在 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)

蟒蛇輸出

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM