Because it considers the changes in setting the default Browser since Windows-Vista, it should work for any Windows Version since Win-98.
Maybe this could be helpful to someone:
Code: Select all
Procedure.s ReadRegKey(OpenKey.l,SubKey.s,ValueName.s)
hKey.l=0
keyvalue.s=Space(255)
datasize.l=255
If RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
keyvalue="Error Opening Key"
Else
If RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
keyvalue="Error Reading key"
Else
keyvalue=Left(keyvalue,datasize-1)
EndIf
RegCloseKey_(hKey)
EndIf
ProcedureReturn keyvalue
EndProcedure
Procedure.s GetDefaultBrowser()
Protected HTMLClass.s, HTMLCommand.s
If OSVersion() = #PB_OS_Windows_Vista Or OSVersion() = #PB_OS_Windows_7 Or OSVersion()=#PB_OS_Windows_Future
HTMLClass = ReadRegKey(#HKEY_CURRENT_USER, "Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice","ProgID")
HTMLCommand = ReadRegKey(#HKEY_LOCAL_MACHINE, "SOFTWARE\Classes\"+HTMLClass+"\shell\open\command", "")
Else
HTMLClass = ReadRegKey(#HKEY_CLASSES_ROOT, ".html", "")
HTMLCommand = ReadRegKey(#HKEY_CLASSES_ROOT, HTMLClass+"\shell\open\command", "")
EndIf
ProcedureReturn GetPathPart(HTMLCommand) + GetFilePart(HTMLCommand)
EndProcedure
Procedure.s GetDefaultBrowser2()
; This Procedure does NOT need the Procedure: ReadRegKey()
Protected hKey.l = 0
Protected keyvalue.s = Space(255)
Protected datasize.l = 255
Protected OpenKey.l = #HKEY_CURRENT_USER
Protected SubKey.s = "SOFTWARE\Clients\StartMenuInternet"
Protected ValueName.s = ""
Protected Browser.s = ""
; Check if DefaultBrowser-Setting exists for Local-User
If Not RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
If Not RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
Browser = Left(keyvalue,datasize-1)
EndIf
RegCloseKey_(hKey)
EndIf
; If Local-User has not special DefaultBrowser-Setting, read Browser-Setting from Local-Machine
If Browser = ""
OpenKey.l = #HKEY_LOCAL_MACHINE
If Not RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
If Not RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
Browser = Left(keyvalue,datasize-1)
EndIf
RegCloseKey_(hKey)
EndIf
EndIf
; Get full Path-Information for DefaultBrowser
If Browser <> ""
datasize.l = 255
OpenKey.l = #HKEY_LOCAL_MACHINE
SubKey.s = "SOFTWARE\Clients\StartMenuInternet\"+Browser+"\shell\open\command"
If Not RegOpenKeyEx_(OpenKey,SubKey,0,#KEY_READ,@hKey)
If Not RegQueryValueEx_(hKey,ValueName,0,0,@keyvalue,@datasize)
Browser = Left(keyvalue,datasize-1)
EndIf
RegCloseKey_(hKey)
EndIf
EndIf
ProcedureReturn Trim(Browser,Chr(34))
EndProcedure
Debug GetDefaultBrowser()
Debug GetDefaultBrowser2()
Because I found a lot of inconsistent informations how to get the Default-Browser, I've added another procedure which reads the Default-Browser in another way.
It would be nice if some of you could try both procedures and could reply which one works better for you.
(Informations about your OS-Version, your Browser, and which Browser will be opened on your system if you start a HTML-File or if a Program calls an URL would be helpful.)
Thanks, PureLust.
(Search Topics: StandardBrowser StandartBrowser DefaultBrowser Standard Standart Default Browser )