我在Python 2.7和Windows上运行以下Python代码。
代码基本上从我的有效Google Chrome标签中抓取网址,然后运行并将URL作为参数传递给Windows批处理文件。
import os
import win32gui
import win32con
hwnd = win32gui.GetForegroundWindow()
omniboxHwnd = win32gui.FindWindowEx(hwnd, 0, 'Chrome_OmniboxView', None)
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)
url = getWindowText(hwnd)
exe = 'run.bat "%s"' %(url)
os.system(exe)
但是,从命令行运行代码会引发以下错误:
TypeError: system() argument 1 must be string without null bytes, not str
我有什么遗漏吗?
编辑:手动输入URL字符串有效,即替换
url = getWindowText(hwnd)
带
url = "https://stackoverflow.com/questions/39976936/"
有效,所以似乎问题在于代码如何从窗口中获取URL字符串。我从How do I get the URL of the active Google Chrome tab in Windows?获取了代码,我根本不熟悉它。是否有其他方法可以获取URL?