Standardbrowser innerhalb eines GUI starten

  • Hallo,
    ich möchte eine url mit dem Standardbrowser z.B. mittels ShellExecute("http://....") aufrufen. Wichtig ist mir das der Broweser eine bestimmt Größe hat und an einer bestimmten Position geöffnet wird. Mit dem IE geht das indem man vorher ein GUI eröffnet und den IE innerhalb dieser GUI ausführt. Für den FF gibt es etwas änliches. Aber was mache ich wenn jemand z.B. Chrom als Browser verwendet?

  • Okay, ich habe verschiedene Ansätze getestet. Zunächst der simple Ansatz: Per ShellExecute die PID abgreifen und dann per WinMove das Fenster positionieren. Funktioniert nicht, da die Adresse an die aktuelle Browser-Instanz weitergereicht wird (Neuer Tab) und ich so keine PID abfangen kann. Auch per ShellExecuteEx (WinAPI UDF) kam ich da nicht weiter. Der komplizierteste, unflexibelste und unschönste Ansatz, der mir eingefallen ist, war der letzte Versuch: Den Pfad zum Standardprogramm per Registry rausfinden und so, mit der Adresse als Parameter, ausführen. Funktioniert auch nicht, da das selbe Verhalten wie bei ShellExecute auftritt (Neuer Tab, keine PID). Die letzte Variation war, - abhängig vom jeweiligen Browser - ein "Neues Fenster"-Flag mit zu übergeben. Allerdings scheitert es auch hier an der Browser-Interprozesskommunikation.

    Ich erkläre das Problem mal ein bisschen bildhafter: Sagen wir, ein Browser-Prozess (FF1) existiert bereits. Ich öffne jetzt per Eingabeaufforderung den Prozess FF2 mit "firefox google.de". FF2 übergibt "google.de" an FF1 und schließt sich selbst, ohne dass man irgendwie an die PID kommen kann. Dasselbe bei Verwendung des "Neues Fenster"-Flags: Ich führe FF2 mit "firefox -new-window google.de" aus. Prompt wird FF3 mit Google Deutschland geöffnet und FF2 wird geschlossen. Auch hier keine Möglichkeit.

    Ich muss also wirklich sagen... Ich sehe schwarz für dein Vorhaben. Ich finde einfach keine Möglichkeit, die aktuelle/neue Browser-Sitzung zu identifizieren. Im Chaos der Browser-eigenen IPC geht alles unter. :wacko:

    • Offizieller Beitrag

    Hi,

    versuch es mal hiermit:

  • Hallo Xenobiologist,

    dein Script funktioniert soweit ich das bisher testen konnte.

    Allerdings stören mich noch zwei Sachen:

    1. Es wird ein neues Tab aufgemacht. Das führt dazu das bereits vorher geöffnete Internetseiten alle verkleinert werden. Kann man das auch so machen das immer ein komplett neues Browserfenster aufgeht und die bereits geöffneten Browserfenster unverändert bleiben?

    2. Wenn FireFox der Standardbrowser ist, wird durch dein Script das Firefox Default-Profil geändert. Alle Seiten die danach geöffnet werden haben dann immer die Größe und die Position aus deinem Script. Kann man da was machen das das Standardprofil erhalten bleibt. Eventuell durch ein temporeres Profil für dein Script.

  • Ah, der geht an dich, Xeno. Das war zu trivial, daran habe ich nicht gedacht. @soso Das Problem an dem Öffnen eines neuen Fensters ist, dass jeder Browser da anders angesprochen werden muss. Firefox will "-new-window" haben, Chrome "--new-window" und IE nochmal was anderes. Eine universelle Lösung ist da also schwer.