Danke für die Hilfe!
Aber ich muss oldschool bleiben
Trotzdem vielen Dank für die Mühe!
Muss nur rausfinden wie ich an diesen Assemblystring komme....
naja früher oder später hätte ich mich mit C# auseinandersetzen müssen
Viele Grüße,
Kevin
Das sollte doch hervorragend mit Threads klappen.
Du kannst die Funktion in einem Thread starten und den Threadstatus in einem anderen Thread abfragen. Wenn der Status nicht mehr "Running" ist, kannst du davon ausgehen dass die Funktion fertig ist und erneut loslegen
wenn ich dich richtig verstanden habe
Wenn ich so etwas wie eine Quicksave-Funktion im Hintergrund durchführen lassen will, bastel ich mir immer einen eigenen Thread den ich dann eine bestimmte Zeit idle setze - und der mir bei Durchführung die jeweilige Funktion aufruft
Hallo!
Danke!
NUr dazu benötigt mein Contorl wohl eine DLlRegisterServer funktion.....mal sehn, was ich dazu im netz finde.
Habe es jetzt geschafft ein eigenes Regtool zu entwerfen, welches die Regvorgänge in der Registry "C++" nachahmt, wenn man damit ein COM Objekt importiert und benutzt.
Gruß,
Kevin
Hiho,
vielen Dank für deine Bemühungen. Da die .NET Programmierung für mich noch Neuland ist habe ich so meine Anfänger Probleme.
Also ich würde meine ToolBar nun gerne als CustomControl erstellen und habe nun auch schon durch #Develop so eine Datei erstellt. Nun frage ich mich wie ich auf diese Steuereinheit (also meine ToolBar) zugreifen kann. Falls sich einer mit dem #Develop-Editor auskennt, dann sagt mir bitte ob es möglich ist das von mir erstellte Steuerelement im FormDesigner benutzen zu können. Also so als wäre es ganz normal unter "WindowsForms" verfügbar. Muss ich es dafür erst irgendwo "anmelden" und anschließend im "Design" Modus unter Custom Controls suchen?
Tschö
Hallo,
ich hab da mal ein Problem. Ich möchte aus der Windows XP Firewall
A: wo die Logdatei liegt und
B: wie groß diese maximal werden darf
auslesen. Die Informationen können in der Firewall auf der Karte Erweitert->Sicherheitsprotokollierung eingetragen werden. Der Befehl "netsh firewall show logging" liefert die Informationen die ich haben möchte. Ich finde es aber unschön netsh aus meiner Anwendung anzuschupsen.
Ich hab' dann ein COM mit dem Namen "NetFwTypeLib" gefunden, was sehr vielversprechend ist. Ich bekomme aber genau die Informationen die ich brauche nicht da raus. Hat jemand ne Idee.
private void button1_Click(object sender, System.EventArgs e)
{
// Regeln der Firewall abrufen
/*
* tecchannel!!!
*
* NetFwTypeLib.INetFwMgr mgr = ( NetFwTypeLib.INetFwMgr ) Activator.CreateInstance( Type.GetTypeFromProgID("hnetcfg.fwmgr" ));
* NetFwTypeLib.INetFwAuthorizedApplication app = ( NetFwTypeLib.INetFwAuthorizedApplication )
* Activator.CreateInstance( Type.GetTypeFromProgID("hnetcfg.fwauthorizedapplication" ));
* app.Name = "Name der Anwendung";
* app.ProcessImageFileName = ImageFileName;
* app.Enabled = enable;
* mgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add( app );
*/
INetFwMgr mgr = ( INetFwMgr ) Activator.CreateInstance( Type.GetTypeFromProgID("hnetcfg.fwmgr" ));
// geregelte Anwendungen
foreach ( INetFwAuthorizedApplication app in mgr.LocalPolicy.CurrentProfile.AuthorizedApplications )
{
txtRules.AppendText ( app.Name + "\r\n" );
}
}
private void button1_Click_1(object sender, System.EventArgs e)
{
// geregelte Services
INetFwMgr mgr = ( INetFwMgr ) Activator.CreateInstance( Type.GetTypeFromProgID("hnetcfg.fwmgr" ));
foreach ( INetFwService srv in mgr.LocalPolicy.CurrentProfile.Services )
{
txtRules2.AppendText ( srv.Name + "\r\n" );
}
}
MfG
Siron
Optimizer schrieb:
Na schau doch mal genau hin - du rufst im setter den setter immer wieder selber auf. Du musst entweder ne Zuweisung an eine variable machen oder den setter der Basisklasse aufrufen.
Hm danke sehr.
Ich steige gerade von C++ nach C# um, ich dachte wenn man das so deklariert, legt er automatisch zu den get und set methoden die variable an...
Mein potenzielles Problem ist nicht, dass das Handle noch nicht erstellt worden ist ist, sondern dass das Steuerelement disposed wird, der invokende Thread das aber nicht merkt, wenn er IsDisposed frägt - eine klassische race condition einfach.
Der entscheidende Unterschied zu typischen Fällen ist aber, dass keine Synchronisierung möglich ist, da man den event-handling Thread blocken müsste, dadurch würde aber auch Invoke() nicht mehr zurückkehren, da Invoke() den aufrufenden Thread so lange blockiert, bis der event Thread den Delegate ausgeführt hat.
Daher meine Frage, kann man den Vorgang irgendwie doch synchronisieren und meine Vermutung, wahrscheinlich hilft nur die ObjectDisposedException fangen.
EDIT: Gibt es ein Invoke(), das den aufrufenden Thread nicht blockiert? Dann könnte ich nämlich vorher synchronisieren, das wäre eine Lösung ganz nach meinem Geschmack. In meinem Fall muss ich nach Invoke() nichts mehr machen, also ist es egal, ob nach der Rückkehr der Delegate schon ausgeführt ist. Aber kein Bock, das selber zu coden.
EDIT2: Ne, würde mir gar nichts bringen. Ich müsste sicherstellen, dass invoke vor close in die Queue kommt.
Abstrakte Basisklasse == Interface.
Das ist nicht korrekt! Denn eine abstrakte Basisklasse hat mindestens eine abstrakte Methode, kann aber auch Methoden mit Implementierung besitzen!
Nein, Headhunter hat das schon vollkommen richtig erklärt.
Deine Labels sind nicht direkt mit den Variablen verknüpft. Du hast nur mal der Text-Eigenschaft deiner Labels den Wert deiner Variablen hinzugefügt. Diesen werden sie bis in alle Ewigkeit behalten, falls nicht Du die Text-Eigenschaft neu setzt.
Und das geht eben nur über eine eigens geschriebene Funktion, in der du allen deinen Labels die veränderten Variablen zuweist.
Allternativ könntest du dir das Observer-Pattern anschauen. Das Ziel dieses Pattern ist es eben diese Werteänderung ein wenig zu vereinfachen und vorallem den Datenblock recht gut von deiner Anzeige abzuschirmen.
http://en.wikipedia.org/wiki/Observer_pattern (kenne die Qualität dieses Artikels nicht, ansonsten google)
Ich sehe grad, dass deine Datenklasse eine statische Klasse is. Das ist für das Observer-Pattern etwas ungünstig. Zumindest würde es zu unschönem Code führen. Vielleicht musst du die Datenklasse ja nicht statisch machen. Ansonsten wäre das Singleton-Pattern die bessere Alternative.
Ich habe eine Klasse von ListView abgeleitet in der die Columnheader mit einen Farbverlauf gefüllt werden sollen.Nun werden einige Header einen Pixel grösser gezeichnet als die anderen(die untere Kante des Randes fehlt).Ich habe r überprüft,das Rechteck hat immer die selbe Höhe und beginnt bei 0.Ich kann mir nicht erklären wie es zu diesen Abweichungen kommt.
//e.DrawBackground();
protected override void OnDrawColumnHeader(System.Windows.Forms.DrawListViewColumnHeaderEventArgs e)
{
Rectangle r = new Rectangle();
r.Location = e.Bounds.Location;
r.Width = e.Bounds.Width;
r.Height = e.Bounds.Height - 2;
Brush brush = new LinearGradientBrush(r, Header_Backgroundcolor1, Header_Backgroundcolor2, 90);
e.Graphics.FillRectangle(brush, r);
Pen pen = new Pen(new LinearGradientBrush(r, Header_Backgroundcolor2, Header_Backgroundcolor1, 90),1);
e.Graphics.DrawRectangle(pen, r);
e.DrawText();
}
Also ich weiß jetzt nicht ob das die Ideale Lösung ist, aber ich hab es jetzt doch mit einem XmlDocument Objekt gemacht!
Und zwar so:
if (File.Exists(sFilename))
{
// dann laden
doc.Load(sFilename);
}
else
{
// ansonsten Versions- und Stammknoten anlegen
node = doc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
doc.AppendChild(node);
node = doc.CreateElement("Fehlerkategorien");
doc.AppendChild(node);
}
// Stammknoten zuweisen
parentNode = doc.DocumentElement;
// Knoten der Kategorie einfügen
node = doc.CreateElement("Kategorie");
node.Attributes.Append(doc.CreateAttribute("Typ"));
node.Attributes["Typ"].InnerText = tBCategory.Text;
doc.DocumentElement.AppendChild(node);
// Kommentar der Kategorie einfügen
node = doc.CreateComment(tBdescription.Text);
doc.DocumentElement.AppendChild(node);
// suche den Knoten
parentNode = doc.SelectSingleNode("./Fehlerkategorien/Kategorie[@Typ='"+tBCategory.Text+"']");
if (parentNode != null)
{
node = doc.CreateElement("AOI-Abdeckung");
node.InnerText = MtbAoi.Text;
parentNode.AppendChild(node);
}
doc.Save(sFilename);
einfach einem XML einen Knoten hinzufügen, bzw. Knoten + Unterknoten