| Autor | Beitrag | 
| Hochhaus 
          Beiträge: 662
 Erhaltene Danke: 8
 
 Windows 7
 Delphi XE2
 
 | 
Verfasst: So 05.01.14 23:48 
 
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
 | 
|  | 
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 06.01.14 09:26 
 
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
 												| 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;
 |  Für diesen Beitrag haben gedankt: Hochhaus
 | 
|  | 
| Hochhaus  
          Beiträge: 662
 Erhaltene Danke: 8
 
 Windows 7
 Delphi XE2
 
 | 
Verfasst: Mo 06.01.14 16:08 
 
Danke ! Super ! Es funktioniert.
 
 Hochhaus
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 06.01.14 16: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...    Für diesen Beitrag haben gedankt: Hochhaus
 | 
|  | 
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Mo 06.01.14 17: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;
 |  Für diesen Beitrag haben gedankt: Hochhaus
 | 
|  | 
| jaenicke 
          Beiträge: 19326
 Erhaltene Danke: 1749
 
 W11 x64 (Chrome, Edge)
 Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
 
 | 
Verfasst: Mo 06.01.14 20: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... Für diesen Beitrag haben gedankt: Hochhaus
 | 
|  | 
| Gerd Kayser 
          Beiträge: 632
 Erhaltene Danke: 121
 
 Win 7 32-bit
 Delphi 2006/XE
 
 | 
Verfasst: Do 09.01.14 08:02 
 
Der Standardbrowser ist in der Registry unter \Software\Clients\StartMenuInternet aufgeführt. Ausgewertet wird zuerst der Eintrag unter HKey_Current_User und danach erst ggf. unter HKey_Local_Machine.
 Quelle: msdn.microsoft.com/e...203067(v=vs.85).aspx | 
|  | 
| hathor Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Do 09.01.14 10:04 
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet]
@="IEXPLORE.EXE"
 
 
 [HKEY_CURRENT_USER\Software\Clients\StartMenuInternet]
 @="FIREFOX.EXE"
 | 
|  | 
| Gerd Kayser 
          Beiträge: 632
 Erhaltene Danke: 121
 
 Win 7 32-bit
 Delphi 2006/XE
 
 | 
Verfasst: Do 09.01.14 17: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. | 
|  |