To można teoretycznie przerobić. Problem w tym, że nie wszystkie przeglądarki podają na belce adres www.
{Wykorzystanie sprawdzenia adresu po istnieniu okna i otwarcie innej strony.
Poniższy przykład, sprawdza czy otworzono w przeglądarce Internet Explorer,
FireFox lub Opera stronę serwisu www.wp.pl .
Jeśli tak to zamykane jest okno przeglądarki i otwierane nowe ze stroną www.onet.pl }
uses ShellApi;
function OknoIstnieje(Nazwa: string): Boolean;
var
txt: THandle;
begin
Result := False;
txt := FindWindow(nil, pchar(Nazwa));
if txt <> 0 then Result := True;
end;
{Wstaw teraz poniższy kod do TTimer ze sprawdzaniem np.: co 5000 ms}
procedure TForm1.Timer1Timer(Sender: TObject);
var
Adres: string;
IE, FF, OP: string;
begin
IE := ' - Microsoft Internet Explorer';
FF := ' - Mozilla Firefox';
OP := ' - Opera';
{Deklaracja tytułu serwisu}
Adres := 'Wirtualna Polska - www.wp.pl';
if OknoIstnieje(Adres + IE) then
begin
PostMessage(FindWindow(nil, pchar(Adres + IE)), WM_CLOSE, 0, 0);
Application.ProcessMessages;
ShellExecute(Handle, 'open', 'iexplore.exe', 'http://www.onet.pl/', nil, SW_SHOWNORMAL);
end
else
if OknoIstnieje(Adres + FF) then
begin
PostMessage(FindWindow(nil, pchar(Adres + FF)), WM_CLOSE, 0, 0);
Application.ProcessMessages;
ShellExecute(Handle, 'open', 'firefox.exe', 'http://www.onet.pl/', nil, SW_SHOWNORMAL);
end
else
if OknoIstnieje(Adres + OP) then
begin
PostMessage(FindWindow(nil, pchar(Adres + OP)), WM_CLOSE, 0, 0);
Application.ProcessMessages;
ShellExecute(Handle, 'open', 'opera.exe', 'http://www.onet.pl/', nil, SW_SHOWNORMAL);
end;
end;