Chr*_*vén 9 python winapi google-chrome
我的Python脚本如何获取Windows中当前活动的Google Chrome选项卡的URL?这必须在不中断用户的情况下完成,因此不能选择发送复制/粘贴的击键.
Chr*_*vén 16
首先,您需要下载并安装pywin32.在脚本中导入这些模块:
import win32gui
import win32con
Run Code Online (Sandbox Code Playgroud)
如果Google Chrome是当前活动的窗口,请先通过以下方式获取窗口句柄:
hwnd = win32gui.GetForegroundWindow()
Run Code Online (Sandbox Code Playgroud)
(否则,请使用以下方法查找Google Chrome窗口句柄win32gui.FindWindow.在查找Windows的类名时,Windows Detective很方便.)
获取URL的唯一方法是获取"omnibox"(地址栏)中的文本.这通常是选项卡的URL,但也可以是用户当前正在键入的任何部分URL或搜索字符串.
此外,多功能框中的URL不包含"http://"前缀,除非用户明确键入了它(并且还没有按下回车键),但它实际上包括"https://"或"ftp: //"如果使用这些协议.
因此,我们在当前Chrome窗口中找到了多功能框子窗口:
omniboxHwnd = win32gui.FindWindowEx(hwnd, 0, 'Chrome_OmniboxView', None)
Run Code Online (Sandbox Code Playgroud)
如果谷歌Chrome团队决定重命名他们的窗口类,这当然会中断.
然后我们得到了多功能框的"窗口文本",这似乎win32gui.GetWindowText对我不起作用.好东西有另一种方法可行:
def getWindowText(hwnd):
buf_size = 1 + win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH, 0, 0)
buf = win32gui.PyMakeBuffer(buf_size)
win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, buf_size, buf)
return str(buf)
Run Code Online (Sandbox Code Playgroud)
这个小函数将WM_GETTEXT消息发送到窗口并返回窗口文本(在这种情况下,是多功能框中的文本).
你去!
| 归档时间: |
|
| 查看次数: |
9086 次 |
| 最近记录: |