2013-09-26 131 views
3

我的腳本每X秒運行一次命令。如何使用python獲取默認瀏覽器的名稱

如果命令是像「啓動WWW」 - >將打開默認瀏覽器我希望能夠關閉命令得到執行下一次之前的瀏覽器的網站。

這個簡短的下方腳本的一部分:

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

我希望能夠支持Firefox,IE,鉻和歌劇,只有關閉通過URL打開瀏覽器。

爲此我需要知道殺哪個進程。

我如何可以使用Python在Windows中標識我os`s默認瀏覽器?

+0

你如何通過URL打開瀏覽器? 'webbrowser.open'? 'os.startfile'?通過'os.system'運行''start'{}''.format(url)'?使用第三方模塊? – abarnert

+0

試試這個:http://stackoverflow.com/questions/5916270/pythons-webbrowser-launches-ie-instead-of-default-on-windows-7 – Vivek

+0

@Vivek:我不認爲這回答了OP的問題。他顯然已經知道如何打開一個網頁(儘管他沒有告訴我們他是怎麼做的)。他只是想知道如何殺死用來打開該網頁的流程。 – abarnert

回答

5

溶液打算從OS的不同而不同的操作系統。

HKEY_CURRENT_USER\Software\Classes\http\shell\open\command\(Default) 

Python有與Windows註冊表打交道,所以你應該能夠做一個模塊:在Windows中,默認的瀏覽器(即用於http協議的默認處理程序)可以從註冊表中讀取:

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傳遞給現有進程,因此無論如何您可能無法殺死它。

+0

如果他通過'os.system'使用'os.startfile'或'start',這真的只是正確的答案......但是因爲這顯然是他在做什麼,所以+1。 – abarnert

+0

好的,如何使用子進程啓動一個命令「start www.google」。 我和這個人很難過。 –

+0

請勿使用'start'。將控制權交給瀏覽器後,'start'立即消失。直接啓動瀏覽器。 – kindall

相關問題