Eine einfache Lösung für den IE:
Delphi-Quellcode:
ShellExecute(0,
'opennew', // <-- !
'http://www.delphipraxis.net',
nil,
nil,
SW_SHOWNORMAL);
Es wäre natürlich möglich, dass andere Browser diesen Schlüssel auch anlegen. Das wäre natürlich am einfachsten, aber als Pessimist würde ich erst mal nur auf den IE tippen. Daher die Lösung #2: mit der "Registry"-
Unit das Programm herausfinden, das für "http" zuständig ist.
Delphi-Quellcode:
uses
Registry;
{ ... }
var
reg : TRegistry;
cmd : string;
begin
reg := TRegistry.Create(KEY_READ);
with reg do
try
RootKey := HKEY_CLASSES_ROOT;
if(OpenKey('http\shell\open\command',false)) then
try
cmd := ReadString('');
finally
CloseKey;
end;
finally
Free;
end;
ShellExecute(0,
'open',
pchar(cmd),
'http://www.delphipraxis.net',
nil,
SW_SHOWNORMAL);
end;
(Ungetestet aus dem Kopf geschrieben. Bitte berücksichtigen!)
Sollte durch irgendwelche Widrigkeiten der "http"-Schlüssel nicht vorhanden sein, kann man zuerst ".html" öffnen und dort den Standardstring auslesen (s. "cmd := ReadString('');"). Dieser verweist auf einen zweiten Schlüssel (meist "htmlfile"), der dann wieder den Pfad zum Programm enthält:
Code:
htmlfile/shell/open/command
(bitte RegEdit benutzen und die Pfadnamen im Zweifelsfall suchen)
Ich glaube, für solche Sachen gab´s auch ´ne einfachere
API-Funktion. Aber da muss ich erst mal gucken; kann sein, dass ich da was verwechsele. Vielleicht weiß die Antwort schon jemand, ansonsten melde ich mich noch mal, wenn sie mir wieder einfällt.