Vielen Dank!
Habe noch eines gefunden: http://www.dependencywalker.com/
Hallo Zusammen!
Könnt ihr mir Tools nennen, mit denen ich die Methoden und Interfaces von beliebigen DLLs auflisten lassen kann?
Vielen Dank nochmals! Finde dieses Beispiel immer noch nicht. Wo steht dieses?
Wenn ich es nun folgendermaßen mache, dann erhalte ich immer bei der Zeile "string temp" eine Exception...
WebRequest request = WebRequest.Create (url + Dateiname);
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
string temp = response.StatusDescription;
response.Close ();
Die Datei ist nicht vorhanden und folglich möchte ich anhand des Status die Datei downloaden oder nicht. Jedoch komme ich gar nicht bis zu dieser Stelle...
Woran könnte es scheitern?
👍
Dort finde ich nur Beipiele für ASP.NET und nicht für reines C#.
Zudem finde ich keinen Befehl, der abprüft ob die Datei vorhanden ist...
Vielen Dank schon mal, aber wie funktioniert das dann genau?
Ich erstelle einen WebRequest mit:
WebRequest myWebRequest = new WebRequest();
Und anschließend?
Hallo Zusammen!
Ich habe das Problem, dass bei einem Download der PC immer kurz hängt, wenn die Datei nicht vorhanden ist, da eine Exception geworfen wird.
Ist es möglich vor dem Download eine Art File.Exists() auszuführen, so dass der Download gar nicht gestartet wird, wenn die Datei nicht vorhanden ist?
Inwiefern meinst du "enthält doc.FirstChild nichts"?
Bei Eingabe von "doc.FirstChild" kommt logischerweise die Ausgabe "System.Xml.XmlDeclaration".
"doc.FirstChild.ChildNodes.Count" ist leider ebenfalls 0.
Ist mein Quelltext richtig?
Wenn ich "root.ChildNodes.Count" ausgeben, erhalte ich den Wert 0.
Wieso werden die Äste eventuell nicht erkannt?
Original von Lord Hessia
Das ist ALLES, was als Fehlermeldung ausgegeben wird?
An unhandled exception of type 'System.Xml.XmlException' occurred in system.xml.dll
Additional information: Systemfehler.
Mit "doc.Load(path)" erhalte ich zwar keinen Fehler, aber er springt auch nicht bei "root.HasChildNodes" in den IF-Teil.
Hallo!
Ich muss leider wieder eine Frage zum leidigen Thema XML-Einlesen stellen.
Ich wollte meine XML-Datei folgendermaßen einlesen:
XmlDocument doc = new XmlDocument();
doc.LoadXml(path);
XmlNode root = doc.FirstChild;
if(root.HasChildNodes)
{
int node = 0;
foreach(XmlElement n1 in root.ChildNodes)
{
string inhalt = n1.Name;
if(inhalt!=null)
{
treeView_bouquets.Nodes.Add(inhalt);
foreach(XmlElement n2 in n1.ChildNodes)
{
string inhalt2 = n2.Name;
treeView_bouquets.Nodes[node].Nodes.Add(inhalt2);
}
node = node+1;
}
}
}
Leider bleibt er schon bei "doc.LoadXml(path);" mit dem Fehler "Systemfehler" hängen.
Kann es an der Struktur der XML-Datei liegen?
<?xml version="1.0" encoding="UTF-8"?>
<inhalt>
<bereich name="xy" hidden="xy" locked="xy">
<punkt service="xy" name="xy" ts="xy" on="xy" position="xy"/>
...
</bereich>
<bereich name="xy" hidden="xy" locked="xy">
...
Original von herbivore
die beste Lösung, wenn man Consolenprogramme schreibt, ist auf 2.0 zu wechseln, denn die Console-Klasse ist unter 2.0 um einiges leistungsfähriger als unter 1.x.
Meinst du damit das neue VS2005?
Ok. Vielen Dank für die präzise Antwort! 👍
Danke für deinen Tipp, aber wie funktioniert das dann?
So bewirkt es keinen Unterschied:
Console.WriteLine("Drücken Sie die [ENTER]-Taste um fortzufahren . . .");
StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
StreamWriter streamOutput = new StreamWriter(new MemoryStream());
Console.SetOut(streamOutput);
Console.ReadLine();
Console.SetOut(standardOutput);
Die eingegebenen Zeichen werden immer noch angezeigt.
Ok, danke!
Falls jemand doch noch eine Lösung kennt, bin ich für alles offen! 😁
Wieso zweiter Thread?
Ich will direkt meine Konsole pausieren lassen.
Bei mir im VS2003 gibt es nur Read oder ReadLine, aber kein ReadKey.
Ebenso findet der bei mir ConsoleKeyInfo nicht.
Ist das neu im VS2005 oder muss ich noch etwas einbinden?
Hallo!
Ich wollte den Befehl PAUSE so wie bei der Batchprogrammierung verwirklichen, um meine Konsolenanwendung im Fehlerfall anhalten zu können.
Mein Code sieht folgendermaßen aus:
Console.WriteLine("Drücken Sie die [ENTER]-Taste um fortzufahren . . .");
StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput());
Console.SetOut(null);
Console.ReadLine();
Console.SetOut(standardOutput);
Es funktioniert ohne Console.SetOut auch einwandfrei, doch als Perfektionist stört es mich, dass andere Eingaben angezeigt werden, daher dachte ich mir einfach den StdOut umzuleiten und anschließend wieder zu setzen.
Hierbei erhalte ich jedoch bei Console.ReadLine folgende Fehlermeldung:
An unhandled exception of type 'System.ArgumentNullException' occurred in mscorlib.dll
Additional information: Wert darf nicht Null sein.
Habe ich hier irgendwo einen Denkfehler?
Arg..., doch so einfach! X(
Vielen Dank!
Hallo!
Ich rufe den "net use"-Befehl über Process.Start folgendermaßen auf:
ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow = true;
startInfo.Arguments = "/c net use "+ netzlaufwerk[i][LETTER].Trim() +" "+ netzlaufwerk[i][PATH].Trim() +" /persistent:no /user:"+ NETUSER +" "+ NETPASS : "");
Process.Start(startInfo);
Jetzt stellt sich mir die Frage ob ich einen Rückgabewert oder die Kommandozeilenausgabe auslesen kann, damit ich weis ob die Verbindung erfolgreich war.
Danke, aber ich glaube ich habe nun doch noch eine Lösung gefunden, welche sogar besser ist:
if(comboBox.Items.IndexOf("GESUCHTES ELEMENT") < 0)
// nicht vorhanden
else
// vorhanden
Hallo!
Wie kann man eigentlich prüfen, ob ein bestimmter Name in einer ComboBox vorhanden ist?
Vielen Dank für die Antworten.
Thread.Abort() hatte ich schon probiert. Dabei erhalte ich eine Exception.
Ich führe jetzt am Ende meines Threads ganz einfach. this.Close() aus. Funktioniert einwandfrei!
Hallo zusammen!
Wie kann ich mein Programm aus einem Thread beenden?
Hintergrund ist folgender:
In meinem Programm kann der Anwender eine Abarbeitung starten, welche in einem neuen Thread gestartet wird. Im Hauptfenster kann der Anwender die Abarbeitung selbst anhalten oder beenden. Wenn jedoch die Abarbeitung erfolgreich war, soll sich das Programm selbst beenden.
Kann mir keiner einen Tipp geben?
Sollte mein Code vom Prinzip her funktionieren, oder habe ich einen grundlegenden Fehler drin?
Ich bekomme es einfach nicht gebacken...
Habe nun folgenden Code:
MailMessage mail = new MailMessage();
mail.To = an_mail;
mail.From = von_mail;
mail.Subject = betreff;
mail.BodyFormat = MailFormat.Html;
mail.Body = text;
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "**USERNAME**");
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "**PASSWORT**");
SmtpMail.SmtpServer = "**SERVER**";
SmtpMail.Send(mail);
Ich erhalte immer folgende Fehlemeldung:
System.Web.HttpException: Auf das Objekt 'CDO.Message' konnte nicht zugegriffen werden. ---> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException (0x80040211): The message could not be sent to the SMTP server. The transport error code was 0x80040217. The server response was not available
Woran könnte es scheitern?
Habe jetzt folgendes Problem. Ich will Mails über einen Server versenden, der die Option "Kennwortauthentifizierung" aktiviert hat.
Wie funktioniert es in diesem Fall?
Spitze, es funktioniert ! ! !
Vielen Dank euch allen!
Ich möchte folgendes Beispiel testen:
MailMessage mail = new MailMessage();
mail.To = "me@mycompany.com";
mail.From = "you@yourcompany.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
SmtpMail.SmtpServer = "localhost"; //your real server goes here
SmtpMail.Send( mail );
Woran scheitert es, wenn ich folgende Meldung erhalte:
The type or namespace name 'MailMessage' could not be found (are you missing a using directive or an assembly reference?)
Da dachte ich mir doch gleich folgendes:
using System.Web.Mail;
Jedoch wird diese Klasse nicht gefunden...
Hallo!
Ist es möglich, dass mir mein Programm sobald es seine Arbeit auf den Clients verrichtet hat eine Mail sendet, ohne dass ein Outlook-Fenster oder ähnliches aufgeht, welches der User bestätigen muss?
Vielen Dank, für deine Mühe, die du dir machst! 👍
@Programmierhans
Du bist einfach der Beste ! ! !
Hast du die Beispiele selbst geschrieben oder kennst du eine Seite, welche Beispiele in der Richtung hat?
Die ID ist lhWnd würde ich behaupten, aber wie finde ich die Caption(Bechriftung) oder die Position heraus?
Wenn ich die ID habe, dann funktioniert dass wohl nicht mit?
IntPtr hwndChild = FindWindowEx(hwndTemp, IntPtr.Zero, "Edit", string.Empty);
Achso... 8o
Wie kann ich dann mehrere Textfelder in einem Fenster befüllen, wenn die alle von der gleichen Klasse sind? Da befüllt er mir logischerweise immer nur das erste.
Jetzt verstehe ich bald gar nichts mehr.
Ich kann doch mit folgendem:
IntPtr hwndTemp = FindWindow("Notepad", "Unbenannt - Editor");
SetForegroundWindow(hwndTemp);
Thread.Sleep(1000);
IntPtr hwndChild = FindWindowEx(hwndTemp, IntPtr.Zero, "Edit", string.Empty);
SendMessage(hwndChild, WM_SETTEXT, 0, "Text im Eingabefeld von Notepad");
Notepad suchen und in den Vordergrund bringen und anschließend in das Feld "Edit" einen Text hineinschreiben.
Jetzt bin ich wieder bei meiner ersten Frage, welche ich vor dem Beispiel von Programmierhans hatte:
Wie bekomme ich den Namen der TextBox(en) heraus?
Arg... Das war alles?! Die 0 zu einer anderen Zahl umzuändern. X(
Vielen Dank ! ! !
Jetzt habe ich aber noch eine Frage:
Ich habe soeben erkannt, dass ich damit doch nur den Klassennamen des Controls erhalte, aber nicht den eigentlichen Namen, mit welchem ich mit Hilfe von
IntPtr hwndChild = FindWindowEx(hwndTemp, IntPtr.Zero, "FELDNAME", string.Empty);
SendMessage(hwndChild,WM_SETTEXT,0, "TextText...");
etwas in diese TextBox schreiben könnte.
Wie bekomme ich denn den Control-Namen heraus?
Irgendwie verstehe ich das mit dem Enumerate nicht.
Wenn ich mir das Beispiel Creating, Enumerating, and Sizing Child Windows ansehe, dann nutzen die darin EnumChildProc um die Fenster zu bekommen. Genau das würde ich für die Controls benötigen, aber EnumChildProc wird doch nur einmal aufgerufen, wie kann es dann in diesem Beispiel alle Fenster resizen?
Hallo herbivore!
Bin am verzweifeln!
Das Control erhalte ich so.
EnumChildProcDelegate childDelegate = new EnumChildProcDelegate(this.EnumChildProc);
EnumChildWindows(hwndTemp, childDelegate, 0);
Anschließend erhält man mit
GetWindowTextA(lhWnd,sb,255);
den Inhalt des 1. Controls und mit
GetClassNameA(lhWnd,sb,255);
den Namen des 1. Controls.
Aber wie erhalt ich den Inhalt und Namen des 2. Controls?
Hmm... Da bin ich zugegebener Maßen jetzt schon etwas verdutzt.
Diese Zeile ist doch lediglich die Ausgabe.
Habe diese Zeile in meinem Programm ersetzt durch:
textBox_log.Text += "Name: "+ strName +" Wert: "+ strValue +"\\r\\n";
Die Methode
GetWindowTextA(lhWnd,sb,255);
liefert mir den TextBox-Inhalt der ersten TextBox und schreibt diesen mit einer maximalen Länge von 255 Charactern in den sb StringBuilder, wobei lhWnd mein gesuchtes Fenster ist.
Anschließend erhalte ich mit
GetClassNameA(lhWnd,sb,255);
den dazugehörigen Namen, mit den gleichen Bedingungen wie zuvor.
Doch wie erhalte ich die nächste TextBox?
Ich dachte, dass ich das nach
EnumChildProcDelegate childDelegate = new EnumChildProcDelegate(this.EnumChildProc);
EnumChildWindows(hwndTemp, childDelegate, 0);
irgendwie erreichen muss, dass er die nächste TextBox ausliest.
Aber anscheinend lag ich damit vollkommen falsch.
Bin ja schon die ganze Zeit am probieren.
Habe aber ehrlich gesagt noch Verständnisprobleme mit dem gegebenen Code und folglich ist es momentan nahezu ein Try&Error Prinzip.
Wenn man es aufgliedert:
EnumChildProcDelegate childDelegate = new EnumChildProcDelegate(this.EnumChildProc);
EnumChildWindows(hwndTemp, childDelegate, 0);
Was bewerikt die 1. und was die 2. Zeile?
Vor allem für was ist die 0?
Hier muss ich irgendwie ansetzten, so weit ich das durchblickt habe, der Rest kann unberührt bleiben. Stimmt doch oder?
Edit:
Und das
sb=sb=...
kann man doch durch
sb=...
ersetzten. Oder hat das einen Nutzen, den ich jetzt nicht verstehe?
Das ist wirklich spitze! Vielen Dank!
Habe schon rumprobiert, aber wie bekomme ich die Namen aller Textboxen in einem Fenster?
Oder besser gefragt:
Wie bekomme ich den Namen der TextBox heraus?
Aber woher weis man, dass das Textfeld "Edit" heißt?
Nehmen wir an ich habe ein Fenster eines eMailprogrammes und möchte dort den Empfänger, Betreff und Text eintragen und anschließend auf Senden klicken.
Wie geht so etwas dann?
Danke für das Beispiel, aber ich wollte Klicks auf Buttons anderer Programme definieren, deren Koordinaten im Vollbild schließlich immer identisch sind und folglich vordefiniert werden können.