AxWebBrowser ansteuern

zarrandreas

Mitglied
Ich möchte im Internet die Webseiten ansteuern, dazu möchte ich die Button Clicks simulieren.
Es gibt ja bereits ein Element in C# AxWebBrowser, der kann schon die Post Variablen abschicken und javascript ausführen, ich möchte aber die Butons anklicken und nicht erst die Seite analysieren die Post Variablen sammeln und dann zwischen durch die Javascript ausführen.
Gibt es da ein bestimmte Methode die Ereignise im Browser zu merken und dann diese zu simulieren.
Das Programm muss button anklicken, als ob ich dieses angeklickt habe.

Danke für die Antwort!
 
Hallo.

Sobald du irgendwas weisst vom Button um ihn zu identifizieren (ID, Name, Value..) ist es kein Problem.

Zuerst brauchst du noch einen Verweis auf die 'Microsoft HTML Object Library' (Bei den COM Objekten zu finden), und gleich der bequemlichkeit ein "using mshtml;" setzen.

Im folgenden Snippet ist 'webCtrl' das AxWebBrowser-Objekt.

Code:
IHTMLDocument3 doc = (IHTMLDocument3) webCtrl.Document;
doc.getElementById("test").click();

Bei mir hätte der Button der gedrückt wird die ID "test".

MSDN:
# IHtmlDocument3
# Alle Interfaces aus mshtml

MfG,
Alex
 
Ich danke für die schnelle Antwort und hilfreiche Antwort

Gibt es eigentlich eine Möglichkeit ein Button oder Link id rauszufinden, auch wenn diese kein Attribut
Code:
<input type="submit "name="test" action="www.tutorials.de" >
haben.
 
Wenn du weisst wie der Button beschriftet ist, geht es. Musst halt einfach alle Form-Elemente durchprobieren:

Für das folgende Snippet nehmen wir an, das wir mehrere ButtonElemente haben, und eines hat die beschriftung "test3"

Code:
IHTMLDocument3 doc = (IHTMLDocument3) webCtrl.Document;

IHTMLInputTextElement txtOutput = (IHTMLInputTextElement) doc.getElementById("output");
			
IHTMLElementCollection col = doc.getElementsByTagName("input");

System.Collections.IEnumerator enumerator = col.GetEnumerator();

while (true)
{
	IHTMLInputElement el = (IHTMLInputElement) enumerator.Current;

	if (el != null)
	{
		if (el.value == "test3")
			txtOutput.value = "test3 found";
	}              

	if (!enumerator.MoveNext())
		break;
}
 
Ach, im übrigen. Alles was du mit JavaScript machen kannst, kannst du mittels mshtml auch in C# Code mit dem WebBrowserControl nachbilden.
Schau dir einfach mal bisserl JavaScript an, und die Interfaces in mshtml.

Viel Spass wünsche ich dir damit. Kann man einige lustige Sachen machen. :)
 
Noch eine Frage.
Gibt es eine Möglichkeit HTML Code von der Webseite schön formatiert (villeicht sogar farbig) in dem Texteditor ausgeben. Ich habe gehört, dass der AXBrowser so etwas auch machen kann.
 
Sorry das weiss ich niun nicht, aber ich glaube nicht das dieses Control den HTML Code direkt, und noch dazu in Farbe, anzeigen kann.

Der Internet Explorer würde dies sonst auch tun (rate mal was du mit diesem Control benutzt), aber er verwendet auch nur Notepad zum Anzeigen des Codes.
 
Noch eine Frage
da gibt es doch die Funktion IHTMLDocument2.elementFromPoint
Code:
			IHTMLDocument2 doc = (IHTMLDocument2) ((AxSHDocVw.AxWebBrowser)sender).Document;
		
			
			IHTMLElement elem = doc.elementFromPoint( mouse.X, mouse.Y );

Ich weiss aber nicht wie ich an die Mouse Position herauskriege und vorallem ob diese Position dann auch in dem Browser gelten wird(wegen anderen Koordinatensystem)

Wie mache ich das am besten, gibt es da sowas wie ein Ereignis onmousemove(... )?

:offtopic:
 
Zurück