AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Mehrere Instanzen des IE aufrufen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Instanzen des IE aufrufen?

Ein Thema von taaktaak · begonnen am 13. Feb 2008 · letzter Beitrag vom 13. Feb 2008
Antwort Antwort
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#1

Mehrere Instanzen des IE aufrufen?

  Alt 13. Feb 2008, 19:45
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:
WinExec(PChar('rundll32 url.dll, FileProtocolHandler '+WebAdresse),SW_Normal);

// etwas moderner...

ShellExecute(Application.Handle,'open',PChar(WebAdresse),nil,nil,SW_Normal);
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.

Gibt es eine Möglichkeit meinen Wunsch, mehrere Instanzen öffnen zu können, zu realisieren?
Ralph
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Mehrere Instanzen des IE aufrufen?

  Alt 13. Feb 2008, 20:31
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?
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Mehrere Instanzen des IE aufrufen?

  Alt 13. Feb 2008, 20:48
Zitat von bluesbear:
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?
ich glaube das ist sein Problem... der macht das automatisch
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#4

Re: Mehrere Instanzen des IE aufrufen?

  Alt 13. Feb 2008, 21:03
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:
ShellExecute(Application.Handle,
             'open',
             PChar('IEXPLORE.EXE'),
             PChar(SelectedItem),
             nil,
             SW_ShowNormal);
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:

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
Ralph
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#5

Re: Mehrere Instanzen des IE aufrufen?

  Alt 13. Feb 2008, 22:00
So, was stört ich mein Geschwätz von vorhin. Folgendes scheint jetzt zu funktionieren:

Delphi-Quellcode:
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;
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...
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz