C# webbrowser control hyperlink klicken

te one

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.255
Hallo,
ich habe mir mal vorgenommen was kleines mit C# zu machen.
Gottseidank gibts ja Google deswegen hab ich einiges schon hinbekommen.

Leider schaffe ich es nicht im Webbrowser automatisch auf einen link zu klicken.
Automatische Formulareingabe etc. hab ich auch vor kurzem mal ausprobiert und hinbekommen.
Zurzeit muss ich aber halt für Links immer virtuell TAB drücken und dann irgendwann ENTER! Aber sobald sich da mal der benutzer einmischt stimmts ja mit der anzahl der TABs auch nixmehr. Deswegen würde ich gerne alle Links in ein Array schreiben und dann eines auswerten (oder auch direkt irgendwie drücken).


Ich hoffe mir kann jemand helfen, denn mit C# kann ich ohne Hilfe (bis jetzt konnte aber immer Google noch helfen) nix anfangen.

mfg
te one
 
Wie wäre es denn, wenn du dir mal ein gescheites Buch zu c# ausleihst....
 
wie wäre es denn mit nem link zu nem gescheiden c#-buch?

hab schon im internet nach tutorials usw. geschaut aber ich finde einfach nix richtig, das das anschaulich für einen erklärt, dem es beim objektorientierten programmieren den magen rumdreht.

wäre sehr nett wenn ihr mir ein paar links oder namen gebt.
 
schau mal hier im forum! Gleich der erste Thread im Bereich Programmieren beschäftigt sich mit FAQs/Howtos und weiteren nützlichen Links für Neueinsteiger. So wie ich das sehe, ist die Liste recht gut und sehr nützlich. Die Sachen sind auch gut erklärt. Wenn aber schon diese Hürde zu hoch ist, dann schau dich nach einem anderen Hobby um, weil dann Programmieren und Du 2 Klassen sind, die nicht kompatibel sind...
 
gegooglet hab ich schon ewig^^ aber eher nach online-tutorials. aber da gibt es anscheinend garnix gescheides.

@Info: hast du diese bücher selbst, und kannst sie weiterempfehlen oder haste die nur eben schnell rausgesucht?

@Rossi: gut das hab ich net gesehen und werd ich mir gleich nochmal durchschauen. Trotzdem hab ich schon einiges in php und mysql programmiert um zu wissen dass ich es doch kann. Nur objektorientiert ist mir ein bisschen fremd da ich in php auch immer einfach der reihe nach geproggt habe.


Ja und zuletzt wäre es trotzdem noch schön wenn mir einer bei meiner richtigen frage "Wie klickt das Programm automatisch auf einen Hyperlink" helfen könnte.
 
Über diese Bücher habe ich bisher nur gute Rezensionen gelesen und es sind halt Top-Verlage. Wenn du dir bzgl. des Erwerbs eines Buches unschlüssig bist, dann solltest du in Erwägung ziehen, dir vor dem Kauf ein solches auszuleihen und mal reinschnuppern, mein junger Padawan!
 
Das ist das *erste* was sie uns im Studium gesagt haben: Vergesst das Internet! In einem Buch hat sich jemand viele Gedanken zu einem bestimmten Thema gemacht und strukturiert aufgeschrieben. In solchen Bereichen ist ein Buch dem Internet *immer* überlegen!
 
Schau mal so auf die Sachen, die Objekt-Orientierte-Programmierung ist wie die reale Welt nur mit einer beschisseneren Grafik ;-). Im normalen Leben hast du es auch mit Objekten zu tun, die aus einem Bauplan bestehen. Sei es die DNA der Lebewesen oder der technische Plan eines Gebäudes etc. Alles hat Eigenschaften, alles hat Funktionen. Bei den Lebewesen werden diese an die Nachkommen vererbt. Mutationen sorgen für Vielfalt. Nun heißt es schlicht Syntax der Sprache lernen und die reale Welt beobachten. Den Rest bringt die Zeit... Im übrigen finde ich das Buch was InfoStud84 von Addison Wesley (Visual C# 2008) vorgeschlagen hat, für den Einsteiger gut, habe selber den Vorgänger bei mir stehen und schau immer mal wieder rein...

@petap: Na hoffentlich haben Sie euch auch gleich noch eine Liste der dicken Schinken mitgegeben. Es gibt solche und solche. Schade wenn bei Seite 691 dann auf einmal die Erkenntnis wächst das 150€ futsch sind und nur die Quadratur des Kreises beschrieben wird! Oftmals sind diese Sachen auch nur ein Wiedergekäutes Etwas der Onlinedoku. Mal abgesehen von der Aktualität. Ebenso ist das Internet unersetzbar wenn es um die Details geht. Da kann kein Buch mithalten oder in welchem Buch steht geschrieben was der Fehler XYZ des Compilers ABC zu bedeuten hat. Schön das ein Autor sich Gedanken macht, nur oftmals leiden diese Bücher an einer von 2 typischen Krankheiten. Entweder gehen Sie nicht tiefgenug in die Materie oder verlieren den geneigten Leser durch allzu akademische Konstrukte und abgehobene Vorstellungen des Autors. Ich persönlich kann weder auf ein gutes Buch noch auf das Internet verzichten um Probleme in der täglichen Arbeit zu lösen. Keines ist ein Ersatz des anderen. Jedoch ergänzen sie sich perfekt.
 
Zuletzt bearbeitet:
Richtig, ein Buch ist nicht das Allheilmittel. An den Umfang einer Onlinecommunity kann es niemals ranreichen. Aber es erleichtert oft den Zugang zu einem Thema. Bücher sind in meinen Augen dann sinnvoll, wenn sie sowas wie "getting started" oder "Kompendium" im Titel haben. Im ersten Fall hat es keine 691 Seiten, weil es will ja klassisch gelesen werden und im 2. Fall kann es ruhig was dicker sein - hauptsache das Stichwortverzeichnis stimmt.

te one, geh in die nahe gelegene Uni-bib und hol dir mal 2-3m³ Bücher über C#. Da ist dann bestimmt was bei, das deinem Horizont (der ist ja gerade beim Programmieren immer sehr unterschiedlich), deinem Geschmack und deiner Erwartung entspricht.
 
na also das mit den büchern hat sich dann ja jetzt so langsam geklärt.

bleibt bei mir immer noch die frage: "Wie klickt das Programm automatisch auf einen Link?"

Ich werde mir zu C# sicherlich in der nahe gelegenen bibliothek ein buch holen. Doch das hilft mir dabei vielleicht auch nicht.
Es wäre schön wenn mir einer genau diese Frage beantworten könnte.

Ich möchte nämlich nicht erst dann ein tausend seitiges buch lesen und dann feststellen, dass das klicken eines Hyperlinks garnet drin beschrieben ist.

Ps: Ich guck gleich mal im Inet was die bücherei zu c# im angebot hat.
 
Für solche Detailfragen würde ich dir auch ein Kompendium empfehlen. Das liest du nicht klassisch von vorne bis hinten sondern suchst dich durch Stichwortverzeichnis.

Vielleicht fragst du mal in einer Community, die auf C# spezialisiert ist: http://www.mycsharp.de/
 
Meiner Ansicht nach, und ich erinnere mich auch das bei mycsharp.de gelesen zu haben, sind die Openbook-Geschichten nicht so das Wahre vom Ei. Aber das muss jeder selbst für sich entscheiden. Bei uns in der Firma, und wir ne reine .NET-Schmiede, guckt niemand in die Openbooks für C#.

Grundsätzlich empfehle ich nur Bücher auf Englisch. Das setzt natürlich auch eine englische Entwicklungsumgebung voraus. Wenn du englischen Begriffe drauf hast, dann findest auch viel mehr Informationen im Netz. Aber auch das wie alles im Leben Geschmackssache.

http://www.amazon.de/Pro-2008-NET-Platform-Windows-Net/dp/1590598849/ 

Für die kommende neue Version (.NET 4.0) hier das Pendant:

http://www.amazon.de/Pro-2010-Net-4-0-Platform/dp/1430225491/ 

Generell gefallen mir die Bücher von Apress sowieso gut.

Aber kommen wir mal zu deinem Problem:

Die Methode, die du suchst heißt "GetElementsByTagName"

Code:
HtmlElementCollection allLinks = webBrowser1.Document.GetElementsByTagName("a");

PS: MSDN ist dein Freund
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx
 
das mit GetElementsByTagName hab ich schonmal beim googlen gelesen. weiß schon nichtmehr ob ich das damit auch getestet habe?! :D so viel getestet

Wenn ich das richtig sehe habe ich dann in ner variable i-wie den link gespeichert. öffne ich nun einfach die seite mit navigate, oder kann ich das i-wie richtig drücken?

Danke
mfg
 
Sicher, du kannst mit der Navigate-Methode vom WebbrowserControl natürlich auch direkt zum Link springen.

Andererseits kannst du den Link auch direkt anklicken. Das geht auch irgendwie über die ElementID glaube ich. Wobei ich ein Navigate() persönlich eleganter finde.
 
Ach du meine Güte ist das ein Schrott!! ABER ES GEHT *freu*

Also wie ich das ganze nun gelöst habe:
Code:
webBrowser1.Document.Focus();
            HtmlElementCollection allLinks = webBrowser1.Document.GetElementsByTagName("a");
            HtmlElement ele = allLinks[0];
            ele.ScrollIntoView(true);
            ele.Focus();
            SendKeys.Send("{ENTER}");

Doch wie um alles in der Welt kommt man drauf, das Ding nach dem Tagnamen "a" suchen zu lassen?? (kommts von <a href=...?)
Jetzt weiß ichs auch wieder... Den Code hab ich mal getestet aber das "a" durch den Text vom Link ersetzt gehabt :lol: Dann hat (in diesem Fall) allLinks keine Elemente und das Prog motzt.

Wenn ich das jetzt richtig sehe stehen dann alle Links in einem array?! Das bedeudet ich müsste am anfang mal die seite aufrufen und mithilfe einer schleife am besten mal die zahlen der links ausgeben lassen.

Danke, jetzt klappts schonmal soweit

EDIT:
So jetzt ist wieder ein neues Problem aufgetaucht: Die Seite die geöffnet wird, besteht aus mehreren frames. Das bedeudet, das programm findet keinen einzigen Link auf der Seite. Also müsste ich den Frame extra öffnen? Hätte ich nie gedacht, dass das so eine sauarbeit ist...
 
Zuletzt bearbeitet:
Richtig! Du musst zuerst überhaupt einmal prüfen ob Frames vorhanden sind

PHP:
if (webBrowser1.Document.Window.Frames.Count <> 0)

Danach musst du ggf. die Anzahl der Frames mit einer Schleife durchlaufen und dir das HTML holen.

PHP:
HtmlWindow frame = webBrowser1.Document.Window.Frames[i]; //i ist der Counter deiner For-Schleife
string frameHtml = frame.Document.Body.OuterHtml;
 
Zurück
Oben