C# .Net: Aktiven Webbrowser Abfragen

Hallo,
Ich möchte gerade einen „Multitab-Webbrowser“ in C#
programmieren! Nur mit den Tabs gibt es ein Problem:
Wie frage ich den Aktuellen Webbrowser ab, damit das
Programm weiss, wo es die Seite öffnen soll?

Danke schon mal im vorraus!

Mfg Software Junior

Ich verstehe zwar den Zusammenhang gerade nicht so ganz, aber damit bekommst du den Pfad zum Standardbrowser:

private string getDefaultBrowser()
{
 string browser = string.Empty;
 RegistryKey key = null;
 try
 {
 key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

 //trim off quotes
 browser = key.GetValue(null).ToString().ToLower().Replace("\"", "");
 if (!browser.EndsWith("exe"))
 {
 //get rid of everything after the ".exe"
 browser = browser.Substring(0, browser.LastIndexOf(".exe")+4);
 }
 }
 finally
 {
 if (key != null) key.Close();
 }
 return browser;
}

Quelle: http://ryanfarley.com/blog/archive/2004/05/16/649.aspx

Hallo,
in Winforms oder WPF? Ist nicht der Reiter aktiv (selected) auf welchem der User sich gerade befindet? Dadurch weißt du ja, welcher aktiv ist, oder?
Gruß
Tom

Hallo,

mit

Process.Start("http://www.wer-weiss-was.de")

wird die entsprechende Seite im Standardbrowser geöffnet. Hilft dir das schon weiter?

Nico

Process.Start("http://www.YourWebsite.de");

Das reicht, weil dein Betriebssystem weiß was der Standardbrowser ist.

Wenn du WPF verwendest, kannst du so den Browser abfragen:
using System;
using System.Windows.Controls;
using System.Windows.Browser;

public class Example
{
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
outputBlock.Text +=
„\nSilverlight can provide browser information:\n“ +
"\nBrowser Name = " + HtmlPage.BrowserInformation.Name +
"\nBrowser Version = " + HtmlPage.BrowserInformation.BrowserVersion.ToString() +
"\nUserAgent = " + HtmlPage.BrowserInformation.UserAgent +
"\nPlatform = " + HtmlPage.BrowserInformation.Platform +
"\nCookiesEnabled = " + HtmlPage.BrowserInformation.CookiesEnabled.ToString() +
"\nProductName = " + HtmlPage.BrowserInformation.ProductName.ToString() +
"\nProductVersion = " + HtmlPage.BrowserInformation.ProductVersion.ToString();
}
}

Ich weiss aber nicht, ob deine Frage überhaupt sinnvoll ist, denn wenn du einen eigenen Browser schreiben willst, dann verwendest du nicht einen installierten Browser sondern sinnvollerweise das Control System.Windows.Controls.Webbrowser auf deinen Tabs. Ein eigenes Browser Control zu schreiben dürfte deine Lebenszeit nicht reichen :smile:

Hi,

ich vermute du möchtest nicht den aktiven Browser abfragen sondern das aktuell selektierte Tab-Panel in deinem Tab-Control?

Wie das geht kommt auf die Umstände an, schreibst du die Anwendung für Windows? Welche Frontend-Technologie verwendest du Windows-Forms oder WPF?

Gruß,
Manuel

Hallo,

ich finde die Frage etwas unverständlich. Willst Du ein Fenster haben, das oben Tabs hat und unten einen "Haupt-"Bereich, in dem die Webseite dargestellt wird? In diesem Fall brauchst du nicht den Standardbrowser (ich vermute, das ist mit „aktueller Browser“ gemeint) sondern eine Rendering-Engine. Eine solche ist z.B. in .net in Form des WebBrowser-Steuerelementes enthalten (http://msdn.microsoft.com/en-us/library/system.windo…). Andere Engines (z.B. WebKit oder Chromium) lassen sich z.B. durch COM-Schnittstelle auch nutzen - aber das ist natürlich nicht so einfach wie die Verwendung des Microsoft-Elementes :smile:
Falls ich Deine Frage falsch verstanden haben - einfach noch mal anders stellen :wink:

Tschau

Danke, Ich glaube ich habe die Frage falsch gestellt!
Ich meinte, das wenn ich verschiedene webbrowser controls geöffnet habe(in jedem Tab eben eins), das das
Programm dann die angegebene Seite(aus der ComboBox) in dem Browser vom gerade
geöffneten Tab läd.

Nicht direkt, da ich die frage falsch gestellt habe.
Ich meinte, dass wenn ich in jedem geöffneten Tab ein
Webbrowser control habe, dass mein Programm dan weis,
in welchem Tab es die Seite öffnen soll(also im gerade
sichtbaren Webbrowser)!
Mfg Software Junior

Danke, jetzt gehts!

Ich habe die Frage falsch geschrieben!
Aber ich habe es inzwischen auch hinbekommen.
Danke trotzdem!
Mfg Software Junior

Process.Start("http://www.YourWebsite.de");

Das reicht, weil dein Betriebssystem weiß was der
Standardbrowser ist.

Ich arbeite leider in Winforms!
Aber Danke für die Antwort!
Mfg Software Junior

Das kommt darauf an, wie dein Programm sonst aufgebaut ist.
Du kannst aber mit

myTabControl.SelectedTab.Controls

auf die Controls im aktuell ausgewählten Tab zugreifen und da das Webbrowser-Control raussuchen. Alternativ empfiehlt sich vielleicht auch eine

Map 

Nico

Ja, ich möchte das aktuell selektierte Tab-Panel in
meinem Tab-Control abfragen. Ja, Ich schreibe für Windows und ich verwende Windows-Forms.
Inzwischen habe ich das Problem aber gelöst!
Danke für die antwort,
Mfg Software Junior

Danke für die Antwort!
Das Problem habe ich inzwischen gelöst!
Mfg Software Junior

Inzwischen habe ich die Antwort gefunden!
Danke trotzdem für die Antwort!
Mfg Software Junior

In Winforms gibt es auch ein Webbrowser Control
Systems.Windows.Forms.WebBrowser
siehe
http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx

Achso…
um das gerade angezeigte WebBrowser Control herauszufinden könntest du es einfach in der (child) ControlCollection der aktuellen TabPage suchen.

Ungetestetes Beispiel ausm Kopf:

var curBrContr;
myTabContr.SelectedTab.Controls.ToList().ForEach(contr =\> 
{
 if(contr.GetType() == (new WebBrowser()).GetType())
 curBrContr = contr;
});

In diesem gefunden Control kannst du dann einfach die Adresse entsprechend ändern.

Respektive kannst du, wenn du die TabPage wechselst auch oben in deiner „Adressleiste“ auch die Url entsprechend dem aktuellen Tab anpassen. Dazu kannst du dich einfach an z.B. das SelectedIndexChanged Event des TabControl anhängen und beim TabPage-Wechsel entsprechend reagieren.

Viel Erfolg weiterhin,
Gruß Lucidus

Wie hast du es gelöst?

Danke, jetzt gehts!