Moin C#'ler.
"Vorgeschichte"
Ich habe eine kurze frage , ich möchte gerne auf einer Homepage Accounts testen mit einem Tool welches ich geschrieben haben. Das Tool ist soweit gehend aufgebaut das es eine Form ist welche aus einem Button und einem Webbrowser besteht, der Webbrowser geht beim Start auf eine Seite mit einem Login , sobald man auf den Button klick werden die ID vom username und password feld und die ID vom Button ausgelesen , dann werden die username und password Felder mit 2 Variablen gefüllt , welche von einem Stream Reader aus einer txt datei gelesen werden.
/*
webBrowser1.Document.GetElementById("userid").SetAttribute("value", username); webBrowser1.Document.GetElementById("userpass").SetAttribute("value", password); webBrowser1.Document.GetElementById("submit").InvokeMember("click");
*/
Weiter gehend wird nur geprüft ob die seite sich ändert (z.b von xyz.de/index.php?s=login zu z.b xyz.de/index.php?=home).
Weitest gehend Funktioniert alles einwandfrei nur nicht unbedingt endnutzer tauglich ^^' heißt:
Ich muss mit einer MessageBox einen "künstlichen Sleep" erzeugen welchen ich dann manuell abbrechen muss sobald die Seite geladen ist..
"Frage"
Ist dieses vorgehen sinnvoll? gibt es eine andere Möglichkeit? Kann ich den Künstlichen Sleep durch einen anderen ersetzen , welcher jedoch nur eine While-Schleife stoppt und nicht unbedingt das komplette Projekt Freezed? (System.Threading.Thread.Sleep Funktioniert leider nicht :
"Komplett Code"
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; namespace Account_Checker_Clean { public partial class Form1 : Form { string[] line; // array zum daten aus der .txt datei auslesen string username, passwort; // wird in die Felder userid und userpass eingesetzt Uri url = new Uri("http://performance2-pvp.de/index.php?s=login"); // die URL die mit der webBrwoser1.Url verglichen wird bool eingeloggt = false; // bool für die while schleife public Form1() { InitializeComponent(); } private void button_Start_Click(object sender, EventArgs e) { try { StreamReader sReader = File.OpenText(@"C:\Users\xyz\Desktop\C#\Extra\Metin2 Account data\Account.txt"); //Datei wird geöffnet for (int i = 0; -1 != sReader.Peek(); i++) // Datei wird gelesen , kommt Peek bei -1 an ist die datei zu ende gelesen { while (eingeloggt == false) { line = sReader.ReadLine().Split(':'); // Liest die Zeile und nimmt die daten auf , ":" teilt Account von Passwort (aufbau 'username:password') username = line[0]; // Benutzername wird aus der array ausgelsen passwort = line[1]; // Passwort wird aus der array ausgelesen MessageBox.Show("Künstlicher Sleep"); if (webBrowser1.Url == url) { webBrowser1.Document.GetElementById("userid").SetAttribute("value", username); // LoginForm auf der Hp wird ausgelesen webBrowser1.Document.GetElementById("userpass").SetAttribute("value", passwort); // und mit den variablen "username,passwort" webBrowser1.Document.GetElementById("submit").InvokeMember("click"); // gefüllt und der Login button wird geklickt } else { eingeloggt = true; //um die obere While schleife zu beenden sReader.Close(); // Datei wird geschlossen } } sReader.Close(); //Schließt die .txt } } catch (Exception exc) { MessageBox.Show(exc.Message); } } } }
Bearbeitet von EiLafJu, 27 February 2016 - 06:58 Uhr.