Seite 1 von 1

Auslesen des Standardbrowsers

Verfasst: 26.11.2009 20:15
von Werner-HH
Ich öffne in einem kleinen Utility zur weboptimierung von Pixelgrafiken während der Bearbeitung durch den Benutzer eine temporäre HTML-Datei im Programmverzeichnung, wenn der zwischendurch sehen will, wie es in Originalgröße im Browser aussehen würde.

Derzeit habe ich das damit gelöst, dass die HTML schlicht im IE geöffnet wird.

Code: Alles auswählen

pfad.s = GetPathPart(ProgramFilename())
RunProgram("Iexplore.exe",pfad + "vorschau.htm","")  
Nun zeigt sich aber, daß es auch Benutzer gibt, die den IE geblockt haben. Wie müsste mein Code aussehen, wenn der Standartbrowser des Benutzers die Vorschau zeigen soll?

Wäre schön, wenn mir da jemand weiterhelfen könnte.

Vielen Dank
Werner

Re: Auslesen des Standardbrowsers

Verfasst: 26.11.2009 20:25
von TomS

Code: Alles auswählen

RunProgram(pfad+"vorschau.htm") 
Damit wird automatisch der Standardbrowser geöffnet.

Re: Auslesen des Standardbrowsers

Verfasst: 26.11.2009 21:14
von STARGÅTE
@ TomS

nicht unbedingt...

bei mir würde sich "HTML Studio" öffnen ... denn RunProgram() nutz das Standard-Programm der Dateierweiterung, das mag bei .htm oder .html meist ein Browser sein, aber da ich viel mit Websites arbeite öffne ich alle Web-Erweiterungen immer mit "HTML Studio" ...

Es ist also nicht die schönste Lösung, eine bessere hab ich allerdings auch nicht ... ich wollte nur mal auf das kleine Problem hinweisen ...

Re: Auslesen des Standardbrowsers

Verfasst: 27.11.2009 02:23
von PureLust
Hallo Werner, ...

alles was ich zu diesem Thema finden konnte deutet auf 2 Registry Einträge hin in der der Standard-Browser hinterlegt ist.

Hier mal ein kleines Beispiel dazu diese Info auszulesen (Dank an Thomas für die Reg-Lese Routine):

Code: Alles auswählen

... Code entfernt - siehe unten ...
Was mich nur ein wenig stutzig macht ist, dass ich selber eigentlich Opera als Standard-Browser benutze, aber trotzdem der IE ausgegeben wird.
Aber wie gesagt - bei der Recherche dazu bin ich eigentlich ausschließlich auf diese Methode gestoßen um den Standard-Browser auszulesen.

[Nachtrag:]

OK, hab das Problem gefunden, warum er bei mir den IE statt Opera angezeigt hat.
Und zwar hat sich seit Vista die Art geändert, wie der Standard-Browser eingestellt wird.

Nachfolgend also mal der neue Code mit dem Du den Sandard-Browser abfagen kannst (sollte nun unter allen Windows-Versionen funktionieren):

Code: Alles auswählen

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

Debug GetDefaultBrowser()
Grüße, PL.

Re: Auslesen des Standardbrowsers

Verfasst: 28.11.2009 15:54
von Werner-HH
Ich bedanke mich für Eure Antworten, die für die Lösung des Probelms sehr hilfreich waren.

Ich habe mich für die Variante Auslesen des Standardbrowsers aus der Registry entschieden.

Besten Dank allen für die Mühe.

Werner