Auslesen des Standardbrowsers

Für allgemeine Fragen zur Programmierung mit PureBasic.
Werner-HH
Beiträge: 2
Registriert: 26.11.2009 20:04

Auslesen des Standardbrowsers

Beitrag 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
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Auslesen des Standardbrowsers

Beitrag von TomS »

Code: Alles auswählen

RunProgram(pfad+"vorschau.htm") 
Damit wird automatisch der Standardbrowser geöffnet.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Auslesen des Standardbrowsers

Beitrag 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 ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: Auslesen des Standardbrowsers

Beitrag 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.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Werner-HH
Beiträge: 2
Registriert: 26.11.2009 20:04

Re: Auslesen des Standardbrowsers

Beitrag 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
Antworten