So, es ist also doch noch nicht überstanden, zwar funktioniert der Aufruf super (so wie gewollt), aber es wird dennoch ein Fehlercode zurückgegeben, das den Ersatzaufruf ausführt - also es werden 2 Seiten geladen, wobei der Ersatzaufruf natürlich wieder ein geöffenetes Fensert überschreibt.
Leider hab ich keine Ahnung, was der Fehlercode
42 bedeutet.
Es schein auch keine Konstante dafür zu geben - hab schon Einiges durchgeschaut...
Delphi-Quellcode:
{ Windows - Define the severity codes }
ERROR_FILE_NOT_FOUND = 2;
ERROR_PATH_NOT_FOUND = 3;
...
{ ShellAPI - ShellExecute() and ShellExecuteEx() error codes }
SE_ERR_FNF = 2; { file not found }
SE_ERR_PNF = 3; { path not found }
...
{nirgends gibt es 'ne 42}
Wie man sieht, wird sobald ein Standardbrowser gefunden wurde, die Webseite über diesen geladen und bei einen Fehler wirds nochmal ohne eine Programmangabe versucht, aber da ja der Fehlercode 42 zurückgegeben wird, obwohl der 1. Aufruf funktioniert, wird ja die Seite doppelt geladen.
Delphi-Quellcode:
If (Prog = '') or (ShellExecute(0, 'open', PChar(Prog), 'http://...#Pos', nil, SW_Show) <> 0) Then
ShellExecute(0, 'open', 'http://...', nil, nil, SW_Show);
Ich könnte zwar den 1. Aufruf bei 0 und 42 als Erfolgreich werten, aber das gefällt mir nicht so richtig, da ich ja nicht weiß, was die 42 ist.