我的脚本每 X 秒运行一个命令。
如果命令类似于“开始 www”-> 在默认浏览器中打开网站,我希望能够在下次执行该命令之前关闭浏览器。
下面这个简短的脚本部分:
if "start www" in command:
time.sleep(interval - 1)
os.system("Taskkill /IM chrome.exe /F")
我希望能够支持firefox,即chrome和opera,并且只关闭通过URL打开的浏览器。
为此,我需要知道要终止哪个进程。
我如何使用 python 识别 Windows 中操作系统的默认浏览器?
最佳答案
解决方案因操作系统而异。在 Windows 上,可以从注册表中读取默认浏览器(即 http
协议(protocol)的默认处理程序):
HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default)
Python 有一个处理 Windows 注册表的模块,因此您应该能够:
from _winreg import HKEY_CURRENT_USER, OpenKey, QueryValue
# In Py3, this module is called winreg without the underscore
with OpenKey(HKEY_CURRENT_USER,
r"Software\Classes\http\shell\open\command") as key:
cmd = QueryValue(key, None)
您将返回一个命令行字符串,其中包含一个 %1
标记,其中应插入要打开的 URL。
您可能应该使用 subprocess
模块来处理浏览器的启动;您可以保留浏览器的进程对象并杀死浏览器的确切实例,而不是盲目地杀死具有相同可执行文件名称的所有进程。如果我已经打开了我的默认浏览器,如果你在没有警告的情况下就把它杀了,我会很生气的。当然,有些浏览器不支持多实例;第二个实例只是将 URL 传递给现有进程,因此您可能无法终止它。
关于python - 如何使用python获取默认浏览器的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19037216/