Laden...

Newbie Projekt... Kann jmd helfen?

Erstellt von jiM3op vor 18 Jahren Letzter Beitrag vor 18 Jahren 3.572 Views
J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren
Newbie Projekt... Kann jmd helfen?

Hallo!

Ich bin noch ziemlicher Neuling im Programmieren. Habe schon ein wenig Erfahrung sammeln können, aber nicht sonderlich viel.

Aus praktischen Gründen, und um weiter zu lernen, möchte ich gerne ein Programm schreiben. Dieses soll folgendes machen:

  • Herausfinden welche WAN-IP ich z.Zt. habe
  • Überprüfen ob diese IP einer bestimmten Maske entspricht
  • Maske stimmt überein = Ende
  • Maske stimmt nicht überein = Disconnect / Connect und von vorn

Wie kann ich sowas am besten angehen? Vor allem... wie kommuniziere ich mit meinem Router um die Connect / Disconnect Geschichte zu triggern?

Bin für jeden Tip dankbar!

jiM

4.221 Beiträge seit 2005
vor 18 Jahren

WanIP: WanIP

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren
Juchhuuu!

Danke Programmierhans!

klappt ganz hervorragend... ich habe aber noch eine kurze Frage...

Wie kann ichs anstellen, dass ich nicht die ganze IP-Adresse sondern nur die drei ersten Oktette bekomme?

Also statt 127.0.0.1 möchte ich nur 127.0.0. ausgelesen haben...

Meine Vermutung ist, dass ich die Zeile

int end=str.IndexOf("<",begin);

anpassen muss... aber weiss nicht genau wie ich das machen soll!

Danke im Voraus,

jim

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo jiM3op,

ich bin ja bei sowas eher für Regular Expressions (Forumssuche), aber hier geht das natürlich auch mit Substring und LastIndexOf.

herbivore

4.221 Beiträge seit 2005
vor 18 Jahren

Ich würde diese Funktion nicht verändern.....

Am Schluss hast Du die IP

von dieser IP machst Du dann ein ToString()

zerlegst den String mit Split ..... Trennpunkt = '.'

und dann pappst Du dir die ersten 3 wieder zusammen mit string.Concat....

oder Du schnippelst aus dem usprünglichen String das Teil raus was du brauchst...

Stichworte: LastIndexOf / Substring

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren
Soweit so schlecht

Danke euch beiden...

dieses Problem habe ich nun gelöst! Ich habe die IP-Adresse einfach zerschnibbelt in die einzelnen Oktette und dann mit

string myipall = System.String.Copy(ipa+"." + ipb+"." +ipc+".");

einen neuen gebastelt! (Bei der Gelegenheit kann ich nur das Tool RegexBuddy empfehlen... das ist Goldes Wert).

Soweit funktioniert alles wunderbar... ABER... 🙁

Da ich nicht weiss, wie ich es schaffe, meinen Router zum "Disconnect / Connect" zu bewegen, habe ich mir mit einem aufgezeichneten Macro geholfen (MacroMachine 3.0). Das Öffnet den Browser, clickt die Buttons und schliesst den Browser wieder). Auch das funktioniert gut! Jedoch scheint es eine sehr schlechte Kombination zu ergeben:

Ich öffne das Macro mit

System.Diagnostics.Process.Start("d:\disco.mma");

Während das Macro ausgeführt wird, scheint das Programm aber weiter zu laufen (warum sollte es auch nicht?). Dadurch kann ich keine Überprüfungen mehr machen, ob die IP-Adresse korrekt ist... deshalb wird das Macro immer weiter ausgeführt.

Ich habe es mit einer while Schleife aufgerufgen:

while (myipall != "84.44.0." || myipall != "84.44.1." || myipall != "84.44.2." || myipall != "84.44.3.")

Das ist schade! Am liebstem möchte ich das connect / disconnect auch in c# machen und das Macro ganz weglassen... Leider besitzt der Router aber nur Submit Buttons, die ich nicht einfach aufrufen kann (ich weiss zumind. nicht wie).

Irgendwelche Tipps? Nochmals SUPER DANKE für die Hilfe bis hierhin... Spitzen Forum und User!

jimmie

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren
Die Lösung?

Hallo!

Habe nun durch googlen scheinbar die absolute Lösung gefunden....

http://www.codeproject.com/csharp/mshtml_automation.asp

In meinem Quelltext (auf der Connect / Disconnect Page des Routers) steht

<input type="submit" value="Connect" onClick="isCon(1)">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Disconnect" onClick="isCon(0)">

Jetzt muss ich nur noch wissen, wie ich diese Events in dem o.g. Script trigger!

Gruß,

jim

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren

Oh Mann....

das sah so super aus... leider hats micht nicht weitergebracht. Ich glaube es liegt daran, dass im Quelltext meines Routers kein Name für den Button angegeben ist. Die o.g. Klasse sucht aber den Quelltext nach einem Namen ab...

Shit!

-
885 Beiträge seit 2004
vor 18 Jahren

Also das ist eigentlich recht einfach (sofern du dich mit HTML/JS auskennst):

Schau dir mal den Code an. Egal ob nen Name oder nicht, der Button hat den EventHandler "oncklick" mit Verweis auf die Funktions isCon mit dem Parameter 1. Jetzt schaust du dir einfach die dahinterstehende Funktion an und kopierst dir dieses am besten in eine neue html-Datei (mit dem Aufruf).

Im nächsten Schritt nimmst du in deinem Code die Process-Klasse und führst deine eben erstellte Datei aus - das war's 😉

P.S.: Sollte die isCon Funktion nur eine Prüfroutine sein (was der Name vermuten lässt), dann nimm das Submit-Ergebnis vom Formular und öffne das.

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren
Hmmmm....

Danke für den Tipp... ich kriegs aber nicht hin.... das Problem ist, dass diese html Datei alles ist, was ich sehen kann. Wie gesagt.. es handelt sich hier um einen Hardware Router. Ich kann leider nichts weiteres Aufrufen um mir bspw. die dahinterstehende Funktion anzusehen.

Im Anhang ist die komplette html-Datei... Wenn jemand weiss wie's geht.... BITTE!!!!! 😁

Danke!

ein genervter

jiM

-
885 Beiträge seit 2004
vor 18 Jahren

Die Lösung habe ich dir bereits gesagt: Schau dir einfach die URL an, die ausgeben wird wenn das Formular abegschickt wird. So jetzt ist POST als action-Angabe. Wir setzen also send ein und schon haben wir die URL die du aufrufen musst um den Router die Anweisung zu geben -> PPPstatus.HTML?ConStatus=1

J
jiM3op Themenstarter:in
24 Beiträge seit 2005
vor 18 Jahren

Hallo!

Auch auf die Gefahr hin, dass es nervig wird... Es geht nicht, weil keine URL ausgegeben wird sobald der Button geklickt wird. Ein Aufruf über

http://192.168.2.1/PPPstatus.html?ConStatus=1

funktioniert ebensowenig. Ich glaube man kann diesen Button wirklich nur über die Weboberfläche (aktiv) bedienen.

Ich hatte mir versucht mit einem Sendkey.Send zu helfen. Leider ging dies auch nicht wirklich, da das Fenster nach dem Aufruf zwar aktiv war, die Keys aber erst gesendet wurden, nachdem ich einmal mit der Maus auf das Fenster geklickt hatte (habe ca. 15 sekunden gewartet bis ich geklickt habe, um sicher zu sein, dass ich nicht zu ungeduldig bin)

jiM