Hi,
nach langer C# Pause muss ich nun mal wieder ein kleines Projekt machen.
Ich möchte die Registry auslesen... lokal ist das über
Registry.LocalMachine.OpenSubKey(...);
auch kein Problem - aber wie mache ich das für x-beliebige Rechner im Netzwerk, von denen ich auch nur den Namen (also (noch) nicht die IP) habe? Wahrscheinlich über WMI oder so... aber weil ich nun ne gewisse Zeit aus C# raus bin, will es mir nicht einfallen... vllt jemand n Schnipsel oder Ideen? Habe leider nur diesen Thread hier gefunden: Weis jemand wie ich über wmi (oder C#) auf andere Registry zugreife aber der war nun nicht soooo befriedigend...
Admin-Passwort bzw. Domänen-Admin habe ich für die Zugriffe - also keine Sicherheitsfragen an dieser Stelle 😉
Vielen Dank für alle Antworten...
Hallo,
ich wusste nicht ob meine Frage zu Forms oder Grafik gehört, deshalb stelle ich sie mal hier - kann aber gerne verschoben werden.
Also ich habe eine Form, in der eine PictureBox liegt mit der gleichen Größe. Die PictrueBox beinhaltet natürlich ein Bild, auf dem ich zeichnen. Nun habe ich noch eine Export-Funktion, die das Bild speichert... das mache ich so:
myPictureBox.Image.Save(sfd.FileName,ImageFormat.Jpeg);
So... dann kann man noch über ein paar Buttons Label der PictureBox hinzufügen:
Label label = new Label();
label.Text = "blabla";
this.picBox.Controls.Add(label);
Soweit, so gut... nun möchte ich aber gerne, dass beim Export ins Bild (oder auch beim Drucken z.B.) die Label-Texte mitgenommen werden.
Meine Idee wäre, die Labels in eine Liste zu schmeißen und in OnPaint jeden Label-Text per DrawString auszugeben. Das finde ich aber daher doof, dass man die Labels auch noch verschieben kann... und dann ist das eher schlecht... und außerdem gibt es doch da bestimmt eine bessere Methode...
Bestimmt fragt ihr euch, warum ich Labels nehme und nicht gleich DrawString ... das rührt daher, dass ich die Labels (oder halt den Text an sich) verschieben muss... und ich habe keine Möglichkeit gefunden, einen DrawString zu verschieben.
Soderle.... also für Ideen bin ich offen 🙂
Merci ihr Lieben und Grüße,
die Schnecke! =)
Was meinst du mit Diskussion zum Project?! 🤔
Na da antworte ich mir doch mal wieder selber 🙂
Ich habe mir jetzt eine Linien-Klasse gebaut, die Start- und Endpunkt hat sowie einen Beschreibungs-String...und wenn ich dann im Paint() alle Linien zeichne, mache ich einfach ein DrawString(myLine.Info, ...) mit ... =)
Hey, das war ja doch ganz einfach 8)
Danke für die Tipps... so in der Art habe ich auch schon gedacht...
Aber habe nun diese Seite gefunden: http://www.codeproject.com/csharp/lineditor.asp#xx1055999xx
da ist schon so ziemlich das, was ich will....
ABER 😉
Wir wäre es möglich, zu der Linie noch eine Beschreibung hinzuzufügen? z.B. per DrawString.... ?!
Habe es doch noch hinbekommen; hier der Code:
if( saveFileDialog.ShowDialog() == DialogResult.OK )
{
FileInfo fileInfo = new FileInfo(saveFileDialog.FileName);
StreamWriter sw = fileInfo.CreateText();
// ...
sw.Write(myDate);
sw.Close();
}
Hey,
ich zeichne Linien mit DrawLine und würde gerne, dass man die Enden der Linien mit der Maus verschieben (= bewegen) kann. So das der User selber wählen kann, ob die Linien senkrecht, vertikal oder diagonal läuft (da er sie je verschieben kann). Ich weiß aber momentan keinen rechten Ansatz dafür um ...
a) einen MouseEvent an den Linienenden zu bekommen
b) Die Enden zu verschieben (vll. im Paint-Ereignis einfach die x bzw. y-Koordinaten an die der Maus anpassen...)
c) ....überhaupt alles...
Schön wäre es auch, wenn man die Linien größer und kleiner machen könnte... mhhh.... also wenn jemand eine Idee hat... her damit 🙂
Grüße!
Hallo zusammen,
ich habe einen SaveFileDialog der über n Filter Dateien des Typs ".adr" anzeigt. Nun möchte ich eine neue Datei speichern, quasi also ein "Save As...". Das geht aber nie, ich kann immer nur bestehende Dateien überschreiben.
Beispiel: ich öffne den SaveFileDialog und sehe im Order C:\Temp diese Dateien:
Nun möchte ich eine neue Datei "test4.adr" anlegen - bekomme aber immer beim klick auf "speichern" die Meldung "test4.adr konnte nicht gefunden werden" ... hmmm? Muss ich die Datei vorher noch anlegen oder wie? Und wenn ja - wie mache ich das?!
Verstehe das gerade nicht so.....?!
Original von Qt21580
Mit GetPixel() bekomme ich zwar unterschiedliche Werte
... aber damit hast du doch schon quasi dein Ergebnis... fu vergleichst einfach beide Pixel-Werte (R,G,B) und wenn z.B. der B-Wert bei dem einem Bild höher ist als bei dem anderen dann weißt du doch, dass es dort "blauer" ist... und mit ein paar Berechnungen kannst du auch feststellen, ob es so und so viel Graustufen mehr sind etc.
Und wenn beide Pixel-Werte gleich sind, dann ist auch das Bild gleich... ganz easy 🙂
... oder was genau willst du jetzt vom PC ausgespuckt haben als Ergebnis?! 🤔
Original von Lynix
.... eben mit einer Abfrage auf null. Das sollte man grundsätzlich bei allen Events so machen.
Oh... das war mir so nicht bewusst.... bzw. habe ich nicht drüber nachgedacht... und bisher hat klopf auf holz das alles immer so funktioniert.... aber eigentlich ist es ja logisch, dass man auf null prüfen sollte.... 😭
Also vielen Dank für eure Tipps, waren wie immer sehr hilfreich.... und ich habe auch wieder was wichtiges dazu gelernt =)
Und mit dem -= geht jetzt auch wunderbar das (oder heißt es "der") Delegate wieder weg... 🙂
Original von IgG
myClass.OverImageDelegate d=new new myClass.OverImageDelegate(OverImage); myObject.OverImage += d; myObject.OverImage -= d;
Aber das += new ... ist in einer anderen Klasse und wird zu einem früheren Zeitpunkt angewandt. Erst im späteren Verlauf des Programms kommt es zu Zuständen, wo sich das Objekt ändert und dann nicht mehr auf das Event reagieren soll....vorher aber schon.
Einfach gesagt: bei Programmstart kann auf alle Bilder in einem Panel ein MouseOver gemacht werden, wird eine Aktion mit einem bestimmten Bild durchgeführt (sagen wir mal n Button gedrückt), dann soll das Bild nicht mehr auf den MouseOver-Event reagieren... ich glaube ich mache es komplizierter als es ist.... X(
Danke für die schnelle Antwort 🙂
Aber irgendwie klappt das so:
myObject.OverImage -= new myClass.OverImageDelegate(OverImage);
nicht...
edit: mit "nicht klappen" meine ich, dass ich dann eine System.Null Exception bekomme, wenn ich den früher vorhandenen Event wieder auslöse... is ja eigentlich auch klar, dass er null ist, denn er ist ja weg... aber das Event wird trotzdem noch ausgelöst... soll es aber nicht... 🙁
... oder habe ich das jetzt missverstanden?! 🤔
Hallo,
hier mein Code:
myObject.OverImage += new myClass.OverImageDelegate(OverImage);
... ich hoffe, das war jetzt verständlich... nun möchte ich von myObject das Delegate OverImage wieder entfernen... also quasi das hier machen:
myObject.Remove(OverImage);
... geht so natürlich nicht, aber damit wisst ihr, was ich möchte... also was habe ich zu tun?!
Danke schon mal =)
Hi zusammen...
ich beschäftige mich gerade mit Sockets...worin ich auch recht neu bin... vielleicht kommen auch daher meine Probs... aber naja, ich kann mir halt nicht helfen und nach n paar Stunden googlen und testen bin ich mit meinem Latein am Ende. 🙁
Ich möchte per UDP ein Broadcast machen und mir alle NICs, die antworten, anzeigen lassen (also die IP der antwortenden Stellen). Doch das klappt nicht wirklich... mein Code bisher:
IPEndPoint ip= new IPEndPoint( IPAddress.Parse( "192.168.1.255"), 24105);
Socket socket= new Socket( ip.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp);
socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
byte[] message= System.Text.Encoding.ASCII.GetBytes( "testnachricht");
socket.SendTo( message, message.Length, SocketFlags.None, ip);
socket.SetSocketOption( SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 1000);
IPEndPoint sender= new IPEndPoint(IPAddress.Any, 0);
EndPoint remoteEP= (EndPoint)sender;
byte[] buffer= new byte[1024];
try
{
int empfangen = socket.ReceiveFrom( buffer, buffer.Length, SocketFlags.None, ref remoteEP);
Debug.Write("Empfangen: " + empfangen.ToString() );
sender= (IPEndPoint)remoteEP;
Debug.Write( "IP:" + sender.Address.ToString() );
}
catch (Exception e)
{
Debug.WriteLine( e.ToString());
}
socket.Close();
Ich bekomme immer ein TimeOut... und ich weiß nicht, ob ich generell was falsch mache... oder woran es sonst liegt. Oder muss ich zum Senden und Empfangen zwei verschiedene Sockets benutzen? 🤔
(antworte mir mal selber) 8)
Ich glaub, ich werde verrückt... das hier:
prnPrevDlg.PrintPreviewControl.Zoom = 1.0;
geht.... wird nur nicht von Visual Studio als autom. Codevervollständigung angeboten... und das hatte mich iritiert... aber compilieren und ausführen tut er es... strange... weiß jemand, warum es nicht per AutoComplete geht?!
Ja... hallo erstmal... 😉
Ich möchte in einem PrintPreviewDialog den Zoom-Faktor auf 100% stellen, per default ist der immer auf "Automatisch" gestellt... wie stelle ich das an? Ich habe diesen code hier über Google gefunden:
previewDialog.PrintPreviewControl.StartPage = 0;
previewDialog.PrintPreviewControl.Zoom = 1.0;
previewDialog.PrintPreviewControl.Columns = 2;
... aber ich kann von meinem PrintPreviewDialog aus nicht PrintPreviewControl aufrufen, bzw. ansprechen... oder bin ich nur zu blöd?!
Also wenn jemand nen schnellen Weg weiß, dann her damit... wenn es nur über ein eigenes Control geht (abgeleitet von PrintPreviewDialog), dann lasst es mich wissen (obwohl mein gesunder Menschenverstand sich fragt, wieso ich keine Eigenschaft "Zoom" finden und einstellen kann).... =)
Wie kann ich auch einfache Weise die Anzahl der übergeordneten Knoten eines TreeView-Knotens ermitteln?
z.B. dieser Tree mit der Anzahl der Nodes dahinter:
Node0 - 0 Parent
- Child0 - 1 Parent
- Child1 - 1 Parent
- Child2 - 1 Parent
Node1 - 0 Parent
- Child0 - 1 Parent
- Child1 - 1 Parent
- Child0 - 2 Parent
- Child1 - 2 Parent
Node2 - 0 Parent
- Child0 - 1 Parent
- Child0 - 2 Parent
- Child0 - 3 Parent
- Child1 - 3 Parent
Ich will natürlich immer die Parent-Anzahl haben.
Hmm... also eigentlich braucht man das Rad ja nicht neu erfinden... wenn du rein den Traffic begrenzen willst, dann kannst du viele fertige Tools nutzen, z.B.das hier: http://www.netlimiter.com/
... nur mal so als Idee... 🙂
Die Bandbreite kann man IMHO nur an den Interfaces eines Netzwerkknotens selber einstellten... sprich, wenn du auf den Router willst, dann musst du dort die Netzwerk-Interfaces konfigurieren. Da dies meist über eine eigene, proprietäre Herstellersoftware funktioniert würde ich jetzt erstmal sagen, dass es schlecht aussieht.
Was für einen Router hast du denn?! Wenn du ihn über Telnet o.ä. steuern kannst, dann könnte ich mir das schon eher vorstellen (z.B. Befehle für die NIC an den Router schicken).
Herje, jetzt habe ich des Rätsels Lösung... Petzold sei Dank... nach Durcharbeiten des ganzen Kapitels über Bildläufe ist mir klar, warum es nicht geht: Der Bildlaufbereich basiert auf Position und Größe der Steuerelemente im Clientbereich. Wenn keine Steuerelemente im Clientbereich vorhanden sind, wird der Bildlaufbereich auf (0,0) gesetzt. Also habe ich die Festlegung der Werte für meine Scrollbar nun erst dann gemacht, nachdem Komponenten auf meinen Panel gelandet sind - und nicht davor. So habe ich meinen Code nun auf folgende kleine Änderung angepasst:
// ERST dem Panel Komponenten hinzufügen
MyCustomPanel panelNew = (MyCustomPanel)myPanels[1];
panelNew.Visible = true;
this.panel.Controls.Add(panelNew);
// Und DANN die AutoScrollPosition festlegen:
this.panel.AutoScrollPosition = new Point(1000,500);
Man... so einfach... wenn mans weiß... =) 8o 😁
Dieser Code hier:
Point p = this.panel.AutoScrollPosition;
p.X = 1000;
p.Y = 500;
this.panel.AutoScrollPosition = p;
MyCustomPanel panelNew = (MyCustomPanel)myPanels[1];
panelNew.Visible = true;
this.panel.Controls.Add(panelNew);
... ändert nicht die ScrollPosition meines Panels... aber warum?!
Der Debugger zeigt das hier (siehe Bild):
AutoScrollPosition ist (0,0) aber scrollPosition ist richtig (1000,500)... warum springt der Schiber der Scrollbalken da nicht hin?! Er bleibt einfach auf (0,0)... das kann doch nicht so schwer sein
Original von dying_fetus
Habe schon nachgegrast und Methoden wie PrintPage, PrintDocument etc. gefunden, ist aber alles irgendwie unbrauchbar.
Naja, ohne PrintPage-Event und PrintDocument wirst du nicht viel drucken können.... das brauchst du nun mal zum Drucken, ob du es schön findest oder nicht.
Da du Daten aus der DB holst und anzeigst, nehme ich an, dass du irgendwo in deinem Code deine Daten in nem DataSet oder eine DataTable hälst... und der Inhalt dieser Komponenten lässt sich recht einfach auf eine Seite bringen und ausdrucken. Beispiele zum Drucken gibt es in der MSDN... und dann änderst du das Beispiel einfach so ab, dass deine DataRows gedruckt werden. Du kannst dir z.B. eine Klasse "Printer" schreiben, der du deine zu druckenden Rows übergibst, dann einfach OnPrintPage überschreiben und so anpassen, dass deine Rows gedruckt werden... z.B. so:
// Um z.B. die Spaltennamen zu drucken:
for(int i = 0; i < myDataTable.Columns.Count; i++)
{
grfx.DrawString(myDataTable.Columns[i].ToString(), myFont, Brushes.Black, xVal, yVal);
}
// Nun noch durch die Rows wandern und deren Werte poer DrawString ausdrucken... fertig :)
Size-Wert der PictureBoxen sind 30x30 (es sind mehrere, die zu einem großen Bild gehören) und Size des Panels ist 1500x1000. Die PictureBoxen sind auf dem Panel. Dann zeichne ich noch auf dem Panel eine Bitmap, die 3000x1500 groß ist, deshalb hat das Panel auch Scrollbars.
Also der Debugger bestätigt, dass die Scrollbars dem Panel gehören.
Original von Programmierhans
Hast Du Panel.AutoScroll auf true
ja.
Original von Programmierhans
ist das Control auf dem Panel grösser als das Panel ?
ja... habe da ein Bild drauf, dass größer ist als das Panel. Das Panel hat auch Scrollbars. 🙁
Ja, er läuft schon per WMI 🙂... ich wollte nur ne andere Möglichkeit haben für das OS, denn eine WMI-Anfrage auf einem Linux-Server verläuft natürlich ins Leere...
... und die installierten Programme kann ich mir per WMI nicht anzeigen lassen, zumindest habe ich dafür keine Auslese-Funktion gefunden...
Also ich habe irgendwie schon wieder Probs mit dem Scrollen, dieses Mal in einem Panel... ich glaube, ich bin da zu blöde für X(...hier mein Code:
Point foundPos = new Point(0,0);
//...
if(valueFound)
{
foundPos.X = 1000;
foundPos.Y = 500;
}
panel.AutoScrollPosition = foundPos;
MessageBox.Show(foundPos.ToString() );
MessageBox.Show(panel.AutoScrollPosition.ToString() );
Ich bekomme als Ausgabe:
(x=1000,y=500)
und
(x=0,y=0)
... hähhh?!?! 🤔
Application.Exit() beendet doch das ganze Programm inkl. aller Unterfenster... oder habe ich da jetzt was nicht verstanden...?!
Was meinst du mit rundll-Befehlen?!
Und wie kann ich das auf einem Remoterechner ausführen?!
Original von norman_timo
"appwiz.cpl"
Ja, der Aufruf ist schon mal gut 🙂
Aber das startet ja die Ansicht für die Software-Übersicht... ich hätte am Liebsten einfach nur eine Textausgabe, also kein ganzes Fenster... sondern sowas wie:
string[] installedPrograms = GetProgrames("192.168.1.1");
... das ist natürlich Wunschdenken, denn ich könnte mir nicht vorstellen, dass es möglich ist, einfach so ein Programm auf einem Remoterechner zu starten... ich könnte den ganzen Rechner ja sonst hacken... 😉
Man könnte bestimmt auf einem Server einen Thread laufenlassen, der Client-Anfragen entgegegennimmt - aber ich habe keinen Server zur Verfügung... 🙁
Hallo... ich nochmal 🙂
Also das mit den Systeminfos läuft soweit, der Link von Programmierhans war gold wert... einfach DLL einbinden, die man auf der Seite runterladen kann und schon geht's los. 🙂
Aber nun noch was anderes dazu: Kann ich auch irgendwie feststellen, welche Programme auf einem Remoterechner installiert sind?! Alle installierten Programme stehen ja in dieser schönen Software-Liste in der Systemsteuerung... kommt man da irgendwie ran? Oder über die Registry?! 🤔
Ah danke... du hast mich wieder mal gerettet! =)
Der Tipp mit der Schriftart war der richtige... ich habe beim Füllen der Nodes teilweise eine andere Schriftart verwendet. Wenn ich meinem TreeView nun direkt vor dem Füllen der Nodes diese andere Schriftart zuweise, dann kann ich alles lesen und es wird nichts mehr beschnitten 🙂
... wäre ich aber nie drauf gekommen! Also tausend Dank! 👍
Ich habe mal wieder ein sehr merkwürdiges Phänomen:
Ich führe folgenden Code aus:
treeView.Nodes[i].Nodes[0].Nodes.Add("Max Mustermann");
treeView.Nodes[i].Nodes[0].Nodes.Add("Uschi Musterfrau");
treeView.Nodes[i].Nodes[0].Nodes.Add("Hans Hugo");
treeView.Nodes[i].Nodes[0].Nodes.Add("Bla");
treeView.Nodes[i].Nodes[0].Nodes.Add("Blaaaaaaaaaaaaaaaaaaaaa");
treeView.Nodes[i].Nodes[0].Nodes.Add("Hund");
Und bekomme in meiner Forms im TreeView als Ausgabe (also der Text auf den Nodes):
Max Musterma
Uschi Muste
Hans Hugo
Bla
Blaaaaaaaaaaaaaaa
Hu
Der Text wird also irgendwie abgeschnitten... ich weiß aber nicht warum?!?! Und das Abschneiden ist quasi willkürlich, also nicht nach Zeichen X, sondern mal nach dem 3. mal nach dem 10. ... ?!?!
Ok... is jetzt n Anhang... schwere Geburt...
Jetzt muss ich nur noch hoffen dass sich
a) das jemand anguckt und
b) auch helfen kann 🙂
Vielen Dank im Voraus =)
[edit] ohhh... wird so direkt eingebunden (das Bild)... suuupper 🙂
Ohh... danke... jetzt weiß ich Bescheid... 🙂
Aber da kann ich ja nur ein http-Pfad angeben zu nem Bild.... ich habe es aber nirgends auf irgendeinem Webspace liegen.... 🙁
Wo hast du "Hyperlink einfügen"??? 8o
Bei mir flackert es auch gerade in einem Panel... habe das SetStyle wie #coder geschrieben hat, habe eine eigene Panel-Klasse, die von Panel erbt und eine eigene Paint-Methode in der ich male:
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaintBackground(e);
Draw(e.Graphics);
}
In Draw() wird dann halt alles gemalt... Linien etc. Und bei den Linien hapert es... die sind nicht gerade, sondern in wilden Bögen übern Bildschirm verteilt als kleine "Konfetti-Schnipsel".... aber ich weiß beim Besten Willen nicht, warum...
Ich habe davon einen Screenshot gemacht... aber wie kann ich hier Bilder einbinden, wenn ich keinen Webspace habe?! 🤔
Na gut, dann packe ich das jetzt zu "merken und dran denken, wenns das nächste mal nicht geht" 🙂
Original von herbivore
panelNew.BringToFront();
... das war es, Danke, Herbivore 🙂
Kannst du mir vll. auch noch sagen, warum... weil mir nicht einleuchtet, warum mein Code nicht ausreichend war... und so lerne ich vll. was für die Zukunft, wenn ich auch weiß, warum das so nicht ging, wie ich mir das gedacht habe.
Vielen Dank für die kompetente Hilfe! 👍 =)
ps@sheitmann: das mit visible = true/false hatte ich erst gedacht, aber an Hand der vielen Verschachtelungen und Funktionen, die im Hintergrund laufen, nur schlecht/unschön umsetzbar. Aber auch dir danke für die Idee 🙂
Wenn der Remote-Rechner in einer Domäne ist... wieso kann ich mich dann nicht als lokaler Admin anmelden? Wenn ich die WMI-Funktionen anspreche, MUSS ich Domänen-Admin sein.... aber die Begründung leuchtet mir nicht so ganz ein, also warum es nicht auch ein lokaler Admin "tut"... weiß jemand eine Erklärung über diese Sicherheitslogik?!
Hallo,
irgendwie kann ich nix zum dem Thema finden, aber vielleicht suche ich auch unter den falschen Begriffen...?!
Es geht um Folgendes: ich habe eine Form, wo links ein Tree ist und rechts ein Panel. Diese Panel ist bei Programmstart noch leer, also quasi mit System-ActiveBorder - Farbe gefüllt und zeigt nichts an. Nachdem man einen Button gedrückt hat, werden verschiedene Funktionen ausgelöst und dynamisch Panels erzeugt. Diese werden in einer ArrayList gespeichert, also eine Panel-ArrayList. Das klappt auch soweit. Nur an dem anzeigen des Panels hapert es... ich habe in der ToolBar ein DropDownMenu mit 5 Einträgen, jeder Eintrag soll ein eigenes Panel aufrufen. Doch jedes Mal, wenn ich eins auswähle, wird dieses nicht angezeigt... es wird nur das "alte" (also das noch vom Programmstart leere) Panel entfernt...
Mein nicht-gehender Code 🙂
// das "alte", leere Panel heißt "panel"
// die Arraylist mit den Panels heißt "myPanels"... :
this.panel.Hide();
Panel panelNew = (Panel)myPanels[selected];
this.Controls.Add(panelNew);
panelNew.Show();
Invalidate(), Refresh() etc. bringen nichts... ich muss irgendwas vergessen haben.... sehe es aber nicht... 🙁
Nee, noch nicht 🙂 👍
Danke, du bist ein Schatz! =)
... wenn ich damit herumprobiert habe, werde ich mal meine Erfahrungen hier schildern...
Also "Fan" bin ich auch nicht von sowas... 😉
Aber hier geht es speziell um ein Programm, was auch nur die Leute bekommen, die ohnehin DomänenAdmins sind... also soll auf keinen Webserver laufen und auch keine "normalen" User im Netz bekommen.
Ich würde gerne auslesen können, welcher User gerade auf einer Maschine arbeitet, welches OS installiert ist, vll. auch noch das System an sich....
... und wenn jemand Ideen hat, nur her damit... denn soooo viel weiter bin ich noch nicht... 8)
Ja... Problem is, ich habe ne Toolbar und habe da Buttons drauf mit Bildern aus ner ImageList. Die Bilder sind Icons, also mit Endung .ico. Wenn ich in meiner Toolbar die Appearance-Eigenschaft auf "normal" setzen, werde die Images der Buttons angezeigt. Ändere ich sie auf "flat", was schöner ist, sind die Images weg. Sehe nur noch die Seperator. Beim laufenden Programm kann ich die Buttons auch klicken, also sie kommen so in dem 3D-Style hervor, aber ich will ja auch die Bilder sehen 🙁 X(
So... und wo wir gerade bei der Toolbar sind: wie kann ich sowohl unter als auch über der ToolBar eine Trennlinie machen? Mit Divider = true habe ich eine solche Linie über der Toolbar, wie kriege ich einen aber da drunter hin? 🤔
_Original von Programmierhans_Ich weiss es schlichtweg nicht.... habe mich bisher nur sehr begrenzt mit Verschlüsselung beschäftigt....
... macht ja nix... du kannst ja nicht alles wissen.... 😁
(obwohl ich das bisher dachte) 😉 8)
Habe nun eine Lösung über Googlen etc. gefunden und habe auf den "Rijndael"-Key gewechselt, da dieser sicherer ist als das "alte" DES (wollte ich eigentlich sowieso schon immer machen, somit passte der momentane Ärger ganz gut).
Da die Beispiele in der MSDN nur über das ver- und entschlüsseln ganzer Dateien handelte, habe ich eine hilfreiche Seite gefunden, auf der erklärt wird, wie einzelne Strings mit dem Rijndael-Algorithmus ver- und entschlüsselt werden.
Für alle anderen hier ein Link auf die Seite: http://www.obviex.com/samples/Encryption.aspx#Output
(Code ist in C# und VB.NET)
Okaaayyy.... das war jetzt zu einfach (also in der MSDN gucken) 😁
Kann ich denn mit dem DESCryptoServiceProvider einen mit "normalen" DES (also das "alte") verschlüsselten String in einer Datei wieder auslesen... eigentlich doch schon, is doch beides DES-Algorithmus...
... und geht das Auslesen auch mit der DESCryptoServiceProvider-Klasse?!
sry... wenn ich so komische Fragen stelle... =)
So, habe es nun umgebaut:
// string keyString = .... ;
// ...
MD5 md5 = new MD5CryptoServiceProvider();
byte[] buffer = Encoding.Default.GetBytes (keyString);
byte[] result = md5.ComputeHash(buffer);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = buffer;
string encrpyted = des.Encrypt(data); // <- ???
... Instanz kann nun angelegt werden... aber Encrypt und Decrypt kennt er nicht mehr... was sind die analogen Methoden dazu?! Kann nix passendes finden... X(
Dieser Code hier lief in einem Projekt ohne Probleme:
// string keyString = .... ;
// ...
MD5 md5 = new MD5CryptoServiceProvider();
byte[] buffer = Encoding.Default.GetBytes (keyString);
byte[] result = md5.ComputeHash(buffer);
string key = System.BitConverter.ToString(result);
DES des = new DES(key); // hier!
string encrpyted = des.Encrypt(data);
... nun habe ich diesen Code in ein neues Projekt getan und nun bekomme ich an der Stelle im Code, wo ich "hier" geschrieben habe, diese Meldung:
Eine Instanz der abstrakten Klasse oder Schnittstelle 'System.Security.Cryptography.DES' konnte nicht erstellt werden.
... was geht da nicht mehr?! Ich habe keine Ahnung... in dem anderen Projekt läuft es... es ist 1:1 der gleiche Code, die gleiche Klasse, alles. Einfach nur in einem neuen Projekt... 🤔 X(
Oh... si... gerade gemacht... das ist ja doch das, was ich wollte... 🙂 👍
Also manchmal sind die Beschreibungstags zu bestimmten Funktionen echt nicht eindeutig... 😭
[edit]: Manchmal könnte ich dich knutschen, Programmierhans... =)
(und mich ohrfeigen...)
Original von Programmierhans
TreeNode.SelectedImageIndex
Legt das nicht auch nur das aktuelle Bild fest...?!
Oder habe ich da was übersehen...?