Ich musste auch leider immer wieder feststellen das auf einigen Zielrechnern der Standard WebBrowser nicht richtig registiert war. Und dann klappte auch ShellExecute in Verbindung mit der reinen
URL nicht. Die Lösung für mein Problem war den WebBrowser direkt zu starten und als Parameter die
URL zu übergeben, was ja das System eigentlich selber machen sollte. Um den EXE Dateinamen vom Standard WebBrowser zu ermitteln braucht man nur FindExecutable aufzurufen und auszuwerten.
Delphi-Quellcode:
uses
ShellAPI;
...
function ExecWebBrowser(
const URL:
String): Boolean;
var
TempFileName:
String;
ExeFileName:
String;
Handle: THandle;
begin
Result := False;
SetLength(TempFileName, MAX_PATH);
SetLength(TempFileName, GetTempPath(Length(TempFileName), PChar(TempFileName)) - 1);
TempFileName := IncludeTrailingPathDelimiter(TempFileName) + '
TMP.HTML';
Handle := CreateFile(PChar(TempFileName), GENERIC_READ
or GENERIC_WRITE, 0,
nil, CREATE_ALWAYS, 0, 0);
if Handle <> INVALID_HANDLE_VALUE
then
begin
SetLength(ExeFileName, MAX_PATH);
if FindExecutable(PChar(TempFileName),
nil, PChar(ExeFileName)) > 32
then
if ShellExecute(0, '
open', PChar(ExeFileName),PChar(
URL),
nil, SW_SHOWNORMAL) > 32
then
Result := True;
CloseHandle(
Handle);
DeleteFile(TempFileName);
end;
end;