2009-04-13 3 views
0

Wir versuchen eine lose Integration unseres Produktes mit einer anderen im Unternehmen zu machen. Wir haben sowohl einen Windows- als auch einen Web-Client, der vollständig im Web verfügbar ist. Kurz gesagt, sie haben eine Zielseite für uns erstellt, die einige Parameter akzeptiert, und wir machen einfach einen GET zu dieser URL, um den Benutzer in die andere Anwendung zu überführen.Kann ich eine Browser-Instanz aus einer Winforms-Anwendung heraus anvisieren?

In der anderen Anwendung gibt es Probleme mit dem Sitzungsstatus, und das Öffnen mehrerer Browser führt dazu, dass der Schlüssel zum Speichern in unserer Anwendung in der Sitzung überschrieben wird. Ich weiß, dass in der Web-Version ist es ein Stück Kuchen:

window.open('http://theotherappsurl.com', 'otherapp'); 

Durch den Fensternamen Parameter übergeben es immer in der gleichen Tab/Fenster öffnet sich.

Die heikele Frage ist in der WinForms-Anwendung alles, was ich tue, ist der Standard-Browser auf die URL Start:

Process.Start('http://theotherappsurl.com'); 

Was mich zu meiner Frage bringt - ist es eine Möglichkeit, bestehende Instanzen eines Ziel Browserfenster beim Starten von Winforms? Gibt es eine Möglichkeit, die Fenster so zu benennen? Alles, was spezifisch für IE ist (ich bin kein Fan davon, aber unser Produkt ist Windows/nur IE)?

Antwort

0

Es ist fast eklig, dass die folgenden funktionierten - eine statische Instanz eines WebBrowser-Steuerelements haben und HTML-Code darauf werfen, der ein window.open() mit dem benannten Fenster ausführt. Es funktioniert genauso wie in einer vorhandenen Browser-Instanz ... muss nicht einmal Teil des Kontrollbaums sein!

So jetzt zusätzlich zu "Targeting" ein Browser-Fenster (etwas, von dem wir nicht dachten, dass es überhaupt möglich wäre), mein Chef möchte, dass es auch diese Browser-Instanz nach vorne bringt. Ich habe window.open (...) in window.open (...) .focus() geändert und es funktioniert auf meinem Rechner (Server 2008 x64/IE8), aber anscheinend nicht auf seinem (XP/IE7). Irgendeine Chance, entweder eine Lösung oder einen konkreten Grund zu finden?

0

Ich weiß nicht, ob Sie diese Overkill betrachten würden, aber Sie könnten eine einfache Winform-App erstellen, die ein Webbrowser-Steuerelement umschließt, es zu einer Einzelinstanz-App macht und diese aufruft, anstatt IE direkt aufzurufen.