![]() |
Mehrere Instanzen des IE aufrufen?
Moin, Moin.
In meinem Programm soll unter anderem die Möglichkeit bestehen, Internet-Seiten aufzurufen. Das funktioniert z.B. mit folgenden Aufrufen ohne Probleme:
Delphi-Quellcode:
Unangenehm ist allerdings, dass ich die Möglichkeit haben möchte mehrere Internet-Seiten gleichzeitig aufrufen zu können (wozu hat man sonst ein Multi-Monitor-System) - die oben gezeigten Lösungen erzeugen aber bei erneutem Aufruf keine neue Instanz des InternetExplorers, sondern laden die angegebene Adresse in die bereits geöffnete Instanz.
WinExec(PChar('rundll32 url.dll, FileProtocolHandler '+WebAdresse),SW_Normal);
// etwas moderner... ShellExecute(Application.Handle,'open',PChar(WebAdresse),nil,nil,SW_Normal); Gibt es eine Möglichkeit meinen Wunsch, mehrere Instanzen öffnen zu können, zu realisieren? |
Re: Mehrere Instanzen des IE aufrufen?
Moin taaktaak,
mehrere Instanzen geht glaub ich gar nicht, aber vielleicht kann man dem bereits laufenden IE irgendwie mitteilen, eine Website in einem neuen Fenster bzw. Tab zu öffnen? :gruebel: |
Re: Mehrere Instanzen des IE aufrufen?
Zitat:
|
Re: Mehrere Instanzen des IE aufrufen?
Moin, Moin,
nach ein wenig basteln im DOS-Fenster bin ich der Lösung wohl näher gekommen. Mit einer kleinen Modifikation bei ShellExecute() wird mit jedem Aufruf eine neue Instanz erzeugt:
Delphi-Quellcode:
Die Lösung ist natürlich so nicht wirklich verwendbar, da ich hier den Namen des Internetbrowsers angeben muss - und damit ist der Code leider nicht allgemeingültig. So ergibt sich eine leicht abgeänderte Fragestellung:
ShellExecute(Application.Handle,
'open', PChar('IEXPLORE.EXE'), PChar(SelectedItem), nil, SW_ShowNormal); Woher bekomme ich den Namen des "Standard-Browsers"? // edit : Schätze, das ist ein Fall für die Registry. Da wird das wohl irgendwo drin stehen. Aber nicht mehr heute :| |
Re: Mehrere Instanzen des IE aufrufen?
So, was stört ich mein Geschwätz von vorhin. Folgendes scheint jetzt zu funktionieren:
Delphi-Quellcode:
Hoffentlich ist das ein Schlüssel, der in allen Windows-Versionen passt. Für XP ist es offenbar der Richtige. Mit Aufruf kann nun bestimmt werden, ob die URL in einer neuen Instanz geöffnet werden soll. Zusätzlich wäre noch nett, Position und Größe des Browserfensters festzulegen - aber diese Erweiterung ist ja keine große Aktion...
procedure Tfo~~.CallInternetAddress(URL:String;Multiple:Boolean);
function DefaultBrowser:String; var Reg : TRegistry; begin Reg:=TRegistry.Create(KEY_READ); try Reg.RootKey:=HKEY_CLASSES_ROOT; if Reg.OpenKeyReadOnly('\htmlfile\shell\open\command') then Result:=Reg.ReadString(''); if Result[1]='"' then begin delete(Result,1,1); Result:=copy(Result,1,pos('"',Result)-1); end; finally Reg.Free; end; end; begin if Multiple then ShellExecute(Handle, 'open', PChar(DefaultBrowser), PChar(URL), nil, SW_ShowNormal) else ShellExecute(Handle, 'open', PChar(URL), nil, nil, SW_ShowNormal) end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz