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

标签 python

我的脚本每 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/

相关文章:

python - 在 Pyramid 中,如何从 View 中返回原始 HTML?

python - _csv 问题。错误 : sequence expected

python - 如何在 EOF 之前读取用户输入?

python - 对于不同的 CSV 文件获得相同的结果

python - Odoo 网站图像上传和文件类型验证

php - 你能在 Joomla 中显示 python 网页代码吗?

python - 为什么 IPython `%timeit` 会为 O(n) 解决方案产生更慢的时间?

python - @pyglet.window.Window.event 如何工作?

python - 如何在 Django Channels 中创建服务器端计时器/倒计时?

python - Pandas 分组和组合行