如何使用python获取默认浏览器的名称

时间:2013-09-26 19:40:35

标签: python

我的脚本每X秒运行一次命令。

如果命令类似于“开始www” - >在默认浏览器中打开一个网站我希望能够在下次执行命令之前关闭浏览器。

以下脚本的这个简短部分:

if "start www" in command:
    time.sleep(interval - 1)
    os.system("Taskkill /IM chrome.exe /F")

我希望能够支持firefox,即chrome和opera,并且只关闭由URL打开的浏览器。

为此,我需要知道要杀死哪个进程。

如何在Windows中使用python识别我的默认浏览器?

2 个答案:

答案 0 :(得分:7)

解决方案将从操作系统到操作系统不同。在Windows上,可以从注册表中读取默认浏览器(即http协议的默认处理程序):

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传递给现有进程,因此无论如何您都可能无法将其杀死。

答案 1 :(得分:0)

我建议这样做。老实说,Python 应该将它包含在 webbrowser 模块中,不幸的是,它只能打开 bla.html 并且会破坏 file:// 协议上的锚点。

直接调用浏览器是有效的:

setCookie