Entwickler-Ecke
Windows API - Welcher Standardbrowser ist installiert ?
Hochhaus - Mo 06.01.14 00:48
Titel: Welcher Standardbrowser ist installiert ?
Hallo allerseits !
wie findet man mit Delphi heraus, welches der Standardbrowser ist, der auf dem System installiert wurde - und welche Version es ist ? Ich finde nur Code, der sich auf den Internet-Explorer bezieht (mit Google).
Danke im Voraus für jede Antwort !
Hochhaus
Delete - Mo 06.01.14 10:26
http://edn.embarcadero.com/article/26083
Sourcecode etwas geändert...
Ergebnis:
Name: firefox.exe
Path: C:\Program Files (x86)\Mozilla Firefox\
Version: 25.0.1 Build 5064
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| uses ...ShellApi,...
Procedure MM(s: String); begin Form1.Memo1.lines.add(s); end;
function FileVersion(const FileName: TFileName): String; var VerInfoSize: Cardinal; VerValueSize: Cardinal; Dummy: Cardinal; PVerInfo: Pointer; PVerValue: PVSFixedFileInfo; iLastError: DWord; begin Result := ''; VerInfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy); if VerInfoSize > 0 then begin GetMem(PVerInfo, VerInfoSize); try if GetFileVersionInfo(PChar(FileName), 0, VerInfoSize, PVerInfo) then begin if VerQueryValue(PVerInfo, '\', Pointer(PVerValue), VerValueSize) then with PVerValue^ do Result := Format('%d.%d.%d Build %d', [ HiWord(dwFileVersionMS), LoWord(dwFileVersionMS), HiWord(dwFileVersionLS), LoWord(dwFileVersionLS)]); end else begin iLastError := GetLastError; Result := Format('GetFileVersionInfo failed: (%d) %s', [iLastError, SysErrorMessage(iLastError)]); end; finally FreeMem(PVerInfo, VerInfoSize); end; end else begin iLastError := GetLastError; Result := Format('GetFileVersionInfo failed: (%d) %s', [iLastError, SysErrorMessage(iLastError)]); end; end;
type TBrowserInformation = record Name: string; Path: string; Version: string; end;
function GetDefaultBrowser2 : TBrowserInformation; var tmp : PChar; res : PChar; version : String;
begin tmp := StrAlloc(255); res := StrAlloc(255);
try GetTempPath(255,tmp); FileCreate(tmp+'htmpl.htm'); FindExecutable('htmpl.htm',tmp,Res); Result.Name := ExtractFileName(res); Result.Path := ExtractFilePath(res); Result.Version := FileVersion(res); SysUtils.DeleteFile(tmp+'htmpl.htm'); finally StrDispose(tmp); StrDispose(res); end; end;
procedure TForm1.FormCreate(Sender: TObject); begin MM('Name: '+GetDefaultBrowser2.Name); MM('Path: '+GetDefaultBrowser2.Path); MM('Version: '+GetDefaultBrowser2.Version); end; |
Hochhaus - Mo 06.01.14 17:08
Danke ! Super ! Es funktioniert.
Hochhaus
jaenicke - Mo 06.01.14 17:54
Wobei es eigentlich so nicht korrekt ist. Denn das ist nicht der Standardbrowser, sondern der Browser, mit dem .htm Dateien standardmäßig geöffnet werden.
Korrekterweise müsste man den Browser ermitteln, der mit dem HTTP-Protokoll verknüpft ist, wie es auch Windows selbst macht.
Außerdem überkommt mich das blanke Grausen, wenn ich sehe, dass da extra eine temporäre Datei erstellt wird, nur weil es der Autor des Artikels nicht besser konnte... :shock:
Delete - Mo 06.01.14 18:03
@jaenicke: Irrtum!
Der Browser, der zum Öffnen von HTML-Files genutzt wird, wird so gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| uses Registry...
procedure TForm1.Button13Click(Sender: TObject); var Reg: TRegistry; KeyName: string; ValueStr: string; begin Reg := TRegistry.Create(KEY_READ); try Reg.RootKey := HKEY_CLASSES_ROOT; KeyName := 'htmlfile\shell\open\command'; if Reg.OpenKey(KeyName, False) then begin ValueStr := Reg.ReadString(''); Reg.CloseKey; ShowMessage(ValueStr); end else ShowMessage('There isn''t a default browser'); finally Reg.Free; end; end; |
jaenicke - Mo 06.01.14 21:18
Du kannst aber auch problemlos einen Browser als Standardbrowser nehmen und einen anderen mit htm-Dateien und noch einen anderen mit html-Dateien verknüpfen... :!:
Das ganze Gedöns mit den Dateierweiterungen hat rein und absolut überhaupt nichts mit dem Standardbrowser zu tun. Er ist nur meistens der gleiche... aber das ist nicht so festgelegt, sondern einfach nur meistens so eingestellt...
Delete - Do 09.01.14 11:04
[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet]
@="IEXPLORE.EXE"
[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet]
@="FIREFOX.EXE"
Gerd Kayser - Do 09.01.14 18:14
hathor hat folgendes geschrieben : |
@="IEXPLORE.EXE"
@="FIREFOX.EXE" |
Das ist kein Widerspruch zu meiner Aussage. Firefox ist hier der Standardbrowser. Erst wenn der Eintrag unter HKey_Current_User fehlt oder leer ist, wird der Schlüssel unter HKey_Local_Machine genommen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!