Laden...

WebBrowser

Erstellt von sniffy vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.731 Views
S
sniffy Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren
WebBrowser

hallo,

ich habe gerade angefangen mit dem WebBrowser Control von .net 2.0 zu arbeiten. Mein erstes Problem liegt darin einen Link aufzurufen. Habe das so versucht

mshtml.IHTMLElement link = (IHTMLElement) webBrowser1.Document.Links[7].DomElement;

link.click();

webBrowser1.Update();

Hier bekomme ich aber nur ein Geräusch einen Klicks aber die url ändert sicht nicht. Kann mir jmd helfen und sagen wie ich einen Link-Klick ausführen kann?

3.728 Beiträge seit 2005
vor 18 Jahren
Zu URL navigieren

Das geht ganz einfach:

webBrowser1.Navigate("http://mycsharp.de");
S
sniffy Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren

ok danke, aber kann man es trotzdem über den link (umweg) machen?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo sniffy,

IHTMLElement sieht aber nicht nach dem 2.0er WebBrowser-Control aus. Aber unter dem 2.0er WebBrowser würde der Click so aussehen:

htmlelemLink.InvokeMember ("Click");

herbivore

S
sniffy Themenstarter:in
3 Beiträge seit 2005
vor 18 Jahren

hallo,

ich wollte desshalb über den link wechseln, weil dann die neue seite in einem frame angezeigt wird. mit InvokeMember ändert sich aber auch das document im browser nicht. X(

ich hab dann versucht über den frame die seite zu wechseln

HtmlWindow main = webBrowser1.Document.Window.Frames["FrameName"];

main.Navigate(url);

hier passiert aber auch nichts. ?(

Wie kann ich einen link-klick vom benutzer simulieren bzw. in einem frame die seite wechseln?

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo sniffy,

der Code den du jetzt gepostet hat, sieht schon mehr nach dem 2.0er WebBrowser-Control aus. 🙂

Und beim 2.0er geht die Zeile, die ich gepostet habe auf jeden Fall. Ob Frames oder nicht ist egal. htmlelemLink.InvokeMember ("Click") funktioniert genauso, als hätte man auf den Link geklickt. Ich habe eine ganze Anwendung darauf aufgebaut. Funktioniert alles wunderbar.

herbivore

I
5 Beiträge seit 2006
vor 18 Jahren

Könnt ihr mir mal sagen, wo ich dieses WebBrowser Controll finden kann?
Ist es eine Art eines Projektes oder irgendwas, dass man in C# importieren muss?
Ich find's einfach nicht 🙁

563 Beiträge seit 2004
vor 18 Jahren

du benötigst .NET 2.0!

System.Windows.Forms.WebBrowser

Du findest das Control auch unter Common Controls im Designer (Visual Studio 2005 versteht sich)

Gruss,
.unreal

S
84 Beiträge seit 2005
vor 18 Jahren

Es geht auch mit 1.1! Allerdings ist es dann ein ActiveX Control!
Das Control in 2.0 ist eigentlich nur ein wrapper. Um das control im vollen umfang zu nutzen ist das activex control in verbindung mit mshtml besser!

29 Beiträge seit 2005
vor 18 Jahren

Probiers mal über das MSHTML-DOM


public void ClickLinkElementWithHrefAttributes(String hrefAttrib)
		{
			try
			{
				foreach(HtmlElement el in ((HtmlDocument)this.editorWebBrowser.Document).getElementsByTagName("A"))
				{
					if(el.getAttribute("href",0).ToString().Equals(hrefAttrib))
					{
						el.click();
						break;
					}		
				}
			}
			catch
			{
			}
			
		}

gruss

29 Beiträge seit 2005
vor 18 Jahren

Original von Sixpack
Es geht auch mit 1.1! Allerdings ist es dann ein ActiveX Control!
Das Control in 2.0 ist eigentlich nur ein wrapper. Um das control im vollen umfang zu nutzen ist das activex control in verbindung mit mshtml besser!

Ja so ähnlich 🙂 Der einzige Unterschied liegt im ActiveX-Hoster. In 1.1 Hostet ein VB-Wrapper das WebbrowserControl, wobei in 2.0 ein C# - Control selber hostet. Das ist der Einzige Unterschied meines Wissens nach. Der entscheidende Punkt liegt aber nicht im Wrapper für das ActiveX-Objekt für den WebBrowser-Control sondern im Hosten des ActiveX-Dokumentes, was noch ein Überladen des DOM's ermöglicht -> DOM-Hacking 🙂

gruss