summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xLib/webbrowser.py120
-rw-r--r--Misc/NEWS3
2 files changed, 9 insertions, 114 deletions
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
index 6deed92..845f1d0 100755
--- a/Lib/webbrowser.py
+++ b/Lib/webbrowser.py
@@ -495,23 +495,10 @@ if os.environ.get("TERM"):
#
if sys.platform[:3] == "win":
-
class WindowsDefault(BaseBrowser):
- # Windows Default opening arguments.
-
- cmd = "start"
- newwindow = ""
- newtab = ""
-
def open(self, url, new=0, autoraise=True):
- # Format the command for optional arguments and add the url.
- if new == 1:
- self.cmd += " " + self.newwindow
- elif new == 2:
- self.cmd += " " + self.newtab
- self.cmd += " " + url
try:
- subprocess.call(self.cmd, shell=True)
+ os.startfile(url)
except OSError:
# [Error 22] No application is associated with the specified
# file for this operation: '<URL>'
@@ -519,108 +506,19 @@ if sys.platform[:3] == "win":
else:
return True
-
- # Windows Sub-Classes for commonly used browsers.
-
- class InternetExplorer(WindowsDefault):
- """Launcher class for Internet Explorer browser"""
-
- cmd = "start iexplore.exe"
- newwindow = ""
- newtab = ""
-
-
- class WinChrome(WindowsDefault):
- """Launcher class for windows specific Google Chrome browser"""
-
- cmd = "start chrome.exe"
- newwindow = "-new-window"
- newtab = "-new-tab"
-
-
- class WinFirefox(WindowsDefault):
- """Launcher class for windows specific Firefox browser"""
-
- cmd = "start firefox.exe"
- newwindow = "-new-window"
- newtab = "-new-tab"
-
-
- class WinOpera(WindowsDefault):
- """Launcher class for windows specific Opera browser"""
-
- cmd = "start opera"
- newwindow = ""
- newtab = ""
-
-
- class WinSeaMonkey(WindowsDefault):
- """Launcher class for windows specific SeaMonkey browser"""
-
- cmd = "start seamonkey"
- newwinow = ""
- newtab = ""
-
-
_tryorder = []
_browsers = {}
- # First try to use the default Windows browser.
+ # First try to use the default Windows browser
register("windows-default", WindowsDefault)
- def find_windows_browsers():
- """ Access the windows registry to determine
- what browsers are on the system.
- """
-
- import winreg
- HKLM = winreg.HKEY_LOCAL_MACHINE
- subkey = r'Software\Clients\StartMenuInternet'
- read32 = winreg.KEY_READ | winreg.KEY_WOW64_32KEY
- read64 = winreg.KEY_READ | winreg.KEY_WOW64_64KEY
- key32 = winreg.OpenKey(HKLM, subkey, access=read32)
- key64 = winreg.OpenKey(HKLM, subkey, access=read64)
-
- # Return a list of browsers found in the registry
- # Check if there are any different browsers in the
- # 32 bit location instead of the 64 bit location.
- browsers = []
- i = 0
- while True:
- try:
- browsers.append(winreg.EnumKey(key32, i))
- except EnvironmentError:
- break
- i += 1
-
- i = 0
- while True:
- try:
- browsers.append(winreg.EnumKey(key64, i))
- except EnvironmentError:
- break
- i += 1
-
- winreg.CloseKey(key32)
- winreg.CloseKey(key64)
-
- return browsers
-
- # Detect some common windows browsers
- for browser in find_windows_browsers():
- browser = browser.lower()
- if "iexplore" in browser:
- register("iexplore", None, InternetExplorer("iexplore"))
- elif "chrome" in browser:
- register("chrome", None, WinChrome("chrome"))
- elif "firefox" in browser:
- register("firefox", None, WinFirefox("firefox"))
- elif "opera" in browser:
- register("opera", None, WinOpera("opera"))
- elif "seamonkey" in browser:
- register("seamonkey", None, WinSeaMonkey("seamonkey"))
- else:
- register(browser, None, WindowsDefault(browser))
+ # Detect some common Windows browsers, fallback to IE
+ iexplore = os.path.join(os.environ.get("PROGRAMFILES", "C:\\Program Files"),
+ "Internet Explorer\\IEXPLORE.EXE")
+ for browser in ("firefox", "firebird", "seamonkey", "mozilla",
+ "netscape", "opera", iexplore):
+ if shutil.which(browser):
+ register(browser, None, BackgroundBrowser(browser))
#
# Platform support for MacOS
diff --git a/Misc/NEWS b/Misc/NEWS
index b28aa19..d67ec38 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -312,9 +312,6 @@ Library
- Issue #14373: C implementation of functools.lru_cache() now can be used with
methods.
-- Issue #8232: webbrowser support incomplete on Windows. Patch by Brandon
- Milam
-
- Issue #24347: Set KeyError if PyDict_GetItemWithError returns NULL.
- Issue #24348: Drop superfluous incref/decref.