Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von cyntonix
Thema: Obfuscator für Sourcedateien (*.cs)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Vielen Dank erstmal für die vielen Antworten und Tips.

Abt hat Recht, ich will weniger mich schützen eher den User.

Uglify hab ich kurz angeschaut, hänge aber noch bisl da Abhängigkeiten fehlen. Wenn ich es zum laufen bekomme dann Committe ich es mal.
Denke da stimmt mit IronJS was nicht.

Leider habe ich eben keine andere Möglichkeit als die CS-Datei im Hauptprogramm (welches von einem dritten ist) zu laden.

Thema: Obfuscator für Sourcedateien (*.cs)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Es gibt kein Assembly.
Die *.cs-Dateien werden an Kunden weitergegeben.

Ich verspreche mir ein "bisschen mehr" Schutz dadurch, dass Änderungen nicht so einfach gemacht werden können.

Thema: Obfuscator für Sourcedateien (*.cs)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Mir ist bekannt dass es keinen 100% Schutz gibt. Dennoch möchte ich es jemand schwer machen, der den Code verändern möchte.

Bezüglich Referenzen:
Hier gibt es kein Problem, da alles wie beschrieben in einer Datei vorhanden sein muss.

Es würde mir reichen wenn alle Variablen und Methoden umbenannt werden, aber wie gesagt, können die aufgelistet Obfuscator die nur auf DLLs bzw. EXE.

Thema: Obfuscator für Sourcedateien (*.cs)
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo Zusammen,

ich suche einen Obfuscator welcher die Sourcedateien verändert.
Ich habe schon einige getestet (List of obfuscators for .NET), leider gehen diese davon aus, dass eine DLL oder EXE geschützt wird.

Hintergrund:
Die Dateien werden in einem Programm als API-Erweiterungen geladen. Hier ist es nur möglich eine *.cs-Datei zu laden.
Ich habe auch schon getestet eine DLL zu kompilieren und diese dann zu obfuscaten, danach das Decompilat zu laden, aber hier klappt auch was nicht, da in dotPeek einige Issues angezeigt werden.

Hat jemand Tipps bzw. einen möglich Workflow?

Danke im Voraus.

Thema: Fehler: Namespace nicht vorhanden, Build ohne Fehler
Am im Forum: GUI: WPF und XAML

Hallo Zusammen,

ich schleppe das Problem nun schon bei zwei Projekten mit und habe noch keine Lösung, darum muss ich nach Hilfe bitten.

Anbei ein Projekt welches mir mehrere Fehler / Probleme aufzeigt. Meiner Meinung nach hängen Sie aber alle Zusammen.

Ich habe ein WPF-Projekt in dem ich ein UserControl einbinde, welches in einem anderem Projekt in der Projektmappe liegt.

Binde ich dieses UC ein, bekomme den Fehler dass dieses nicht gefunden wurde. Komischerweise tritt dieser Fehler nur sporadisch auf. Der Designer zeigt keine Vorschau, aber baue ich es, startet es mit erwartetem UI.
Die Einbindung ist:


xmlns:errorList="clr-namespace:ErrorList;assembly=ErrorList"
...
<errorList:ErrorListControl x:Name="errors"/>

Der zweite Fehler, welcher immer erscheint ist eine Ressource (Converter), welche ich z.B. in der App.xaml hinterlege:

    <Application.Resources>
        <demoResourceProblem:ValueToBackgroundColorConverter x:Key="valueToBackground" />
    </Application.Resources>

Bei der Verwendung (DatagridColumn soll farbig anzeigen ob die Anzahl positiv/negativ ist):

<Setter Property="Background" Value="{Binding Count, Converter={StaticResource valueToBackground}}" />
... erhalte ich folgende Fehler:
Fehler
Fehler 1 Der Name "ValueToBackgroundColorConverter" ist im Namespace "clr-namespace:DemoResourceProblem" nicht vorhanden. \\...\DemoResourceProblem\App.xaml 7 9 DemoResourceProblem

Fehler 2 Ein Objekt vom Typ "System.Object" kann auf eine Eigenschaft, die den Typ "System.Windows.Data.IValueConverter" erwartet, nicht angewendet werden. \\...\DemoResourceProblem\App.xaml 17 67 DemoResourceProblem

Fehler 3 Der Name "ValueToBackgroundColorConverter" ist im Namespace "clr-namespace:DemoResourceProblem" nicht vorhanden. \\...\DemoResourceProblem\App.xaml 1 1 DemoResourceProblem

Verzweifle hier ein bisschen. Habe natürlich nach diesen Verhalten gegoogelt, und nur die Tips gelesen, das Zielsystem / Framework umzustellen:
Namespace not found
xmlns assembly Erweiterung

Vielen Dank schon im Voraus!

Thema: FTP Listing aller Dateien eines Dateityps (rekursiv)
Am im Forum: Netzwerktechnologien

Ich habe jetzt einfach mal die PHP-Variante getestet da es wahrscheinlicher ist dass diese performanter ist...
gebe die Pfade direkt aus und hole mir den Inhalt in C#

function getDirectory( $path = '.', $level = 0 ){ 

    $ignore = array( 'cgi-bin', '.', '..' ); 
    // Directories to ignore when listing output. Many hosts 
    // will deny PHP access to the cgi-bin. 

    $dh = @opendir( $path ); 
    // Open the directory to the handle $dh 
     
    while( false !== ( $file = readdir( $dh ) ) ){ 
    // Loop through the directory 
     
        if( !in_array( $file, $ignore ) ){ 
        // Check that this file is not to be ignored 
             
            $spaces = str_repeat( '&nbsp;', ( $level * 4 ) ); 
            // Just to add spacing to the list, to better 
            // show the directory tree. 
             
            if( is_dir( "$path/$file" ) ){ 
            // Its a directory, so we need to keep reading down... 
             
                // echo "<strong>$spaces $file</strong><br />"; 
                getDirectory( "$path/$file", ($level+1) ); 
                // Re-call this same function but on a new directory. 
                // this is what makes function recursive. 
             
            } else { 
 
				$link = str_replace("./files/","http://www.xxx.de/files/",$path);
				$link = "$link/$file";
				
				
				
                echo "$link<br/>"; 
                // Just print out the filename 
             
            } 
         
        } 
     
    } 
     
    closedir( $dh ); 
    // Close the directory handle 

} 


Wie gesagt bin ich in php garnicht fit ... habe bestehende lösung angepasst.
Für Anregungen bzgl. php-code bin ich sehr offen!

DANKE

Gruß
cyn

Thema: FTP Listing aller Dateien eines Dateityps (rekursiv)
Am im Forum: Netzwerktechnologien

Hallo zusammen,

ich bräuchte kurz eure Meinung :)

Wir müssen auf unserem FTP-Server öfters einen Prüflauf ausführen welche bzw. ob Dateien vorhanden sind.
Ich prüfe zuerst ob die gesuchte Datei vorhanden ist:


        public bool FTPFileExists(string FilePath)
        {
            FtpWebRequest req = (FtpWebRequest)WebRequest.Create(sFtpUrl + FilePath);
            req.Credentials = new NetworkCredential(sFtpUser, sFtpPassword);
            req.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            try
            {
                FtpWebResponse resp = (FtpWebResponse)req.GetResponse();
                resp.Close();
                return true; // File exist
            }
            catch
            {
                return false; // File doesn’t exist
            }
        }

... aber das dauert je nach Tagesform unserer Internetleitung eine weile.
(Ich habe keine Möglichkeit gefunden nicht jedesmal für eine Datei einen neuen Request zu machen. Vorschläge wie ich dies beschleunigen kann?)

Nun möchte ich generell vor dem Start der Überprüfung ein Filelisting erstellen welche alle Dateien in einem Ordner (Unterordner einbezogen) erstellt.

Mir ist die Listingfunktion bekannt, habe aber Angst dass ich hier an perfomance nicht viel gewinne.
Eine fertige Funktion / Methode habe ich leider nicht gefunden um dies zu testen. Das zu programmieren bekomme ich schon hin.

Nun zu meiner konkreten Frage:
Da auf dem Server auch PHP läuft könnte ich dies auch als PHP-Script machen und beim Aufruf der php-Datei ein Listing Ausgeben. Leider bin ich hier nicht so fit.
- soll ich dies in php realisieren und in meiner c#-anwendung einlesen?
- soll ich ein listing per c# holen und danach prüfen


Es kann sein dass paar mal im Jahr eine Überprüfung mit 5000 Dateien stattfindet. Macht das was aus wenn ich 5000x auf den FTP per request "einprügle"? Nicht das dieser meint ich mach ne "attacke" :)

Vielen Dank für eure Meinung

Gruß
cyn

Thema: externes Programm im Fenster der eigenen Anwendung ausführen
Am im Forum: GUI: Windows-Forms

Da der Code nicht mehr gepostet wurde, stellt sich für mich noch die Frage wie der Prozess angezeigt werden kann.
Soviel ich verstanden habe (MSDN) muss ich mit ShowWindow die Form aufrufen. Leider ist dies aber nicht verfügbar (steckt das nicht in der user32 ?!).

Anbei mein Code zum Aufrufen des Prozesses:

        [DllImport("user32.dll", SetLastError = true)]
        static extern IntPtr SetParent(IntPtr child, IntPtr newParent);

        Process proc = new Process();

        private void Form1_Load(object sender, EventArgs e)
        {
            proc.StartInfo.FileName = FILENAME;
            proc.StartInfo.UseShellExecute = true;
            proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            proc.Start();
            proc.WaitForInputIdle();

            IntPtr processWindowHandle = proc.MainWindowHandle;
            SetParent(processWindowHandle, this.Handle);
            
            ShowWindow(SW_SHOWMAXIMIZED, 3); //FEHLER
        }

Danke schon mal :)

Gruß
cyn

Thema: Fenster eines Prozess in der eigenen Applikation anzeigen
Am im Forum: GUI: Windows-Forms

Vielen Dank. Weiß nicht warum ich das nicht gefunden habe. Keywords waren richtig :/

(Ironie ist aber nicht sehr nett)

Grüße

Thema: Fenster eines Prozess in der eigenen Applikation anzeigen
Am im Forum: GUI: Windows-Forms

Vielen Dank erstmal.
Versuche die Woche den Code zu übersetzen, bin aber nicht so fit in VB.
Bitte Thema noch offen lassen!

Danke!
Gruß
cyn

Thema: Fenster eines Prozess in der eigenen Applikation anzeigen
Am im Forum: GUI: Windows-Forms

Hallo,

ich möchte gerne einen Prozess (z.B. PDF-Datei) starten und in der Applikation anzeigen lassen.
Funktionsweise Ähnlich wie im Browser in einem Frame.
Das Programm soll als Datei-Viewer für MSG und PDF-Dateien dienen.
Man könnte die Dateien auch nativ in .NET einlesen, die Anwender möchten aber ihre "Standardprogramme" verwenden, welche nicht immer gleich sind.
Über Process.Start() kann ich das ganze realisieren, aber es sollte im Programm geschehen.
Nach langem Googlen habe ich nichts gefunden.

Vielen Dank schon mal!

Gruß
cyn

Thema: Treeview: Selection geht nicht
Am im Forum: GUI: Windows-Forms

Danke an alle für die Hilfe!
(Mir sind Denkanstöße lieber, da der Lerneffekt höher ist. Dennoch hab ich nicht genau gewusst wie ich ansetzen soll).

Nun funktioniert das ganze. Aber ich frage mich warum meine Lösung nicht funktioniert hat... denn normalerweise ist doch der Fullpath dann gleich aber ich bekam kein true... warum?

Danke noch mal!
Gruß
cyn

Thema: Treeview: Selection geht nicht
Am im Forum: GUI: Windows-Forms

Ok. Danke erstmal an alle für die Hilfe.
Nun ist es aber so:
wenn ich auf den Button drücke, der die Notes entfernt und hinzufügt dann steht in TreeView.SelectedNode.Name nix (""). Warum?
ich durchlaufe alle Nodes und dann frag ich sie ab:


            foreach (TreeNode node in tvDateien.Nodes)
            {
                node.Name = node.FullPath;
            }

            oldSelectedNode = tvDateien.SelectedNode.Name;

            // Nodes Löschen & Hinzufügen

            TreeNode[] tn = tvDateien.Nodes[0].Nodes.Find(oldSelectedNode, true);
            for (int i = 0; i < tn.Length; i++)
            {
                tvDateien.SelectedNode = tn[i];
                tvDateien.SelectedNode.BackColor = Color.Yellow;
            }

Problem ist das (string) oldSelectedNode leer ist :(

Thema: Treeview: Selection geht nicht
Am im Forum: GUI: Windows-Forms

habs nun mal so probiert:


           oldSelectedNode = tvDateien.SelectedNode.Text;
           
// Löschen und wieder hinzufügen von allen Nodes

            TreeNode[] tn = tvDateien.Nodes[0].Nodes.Find(oldSelectedNode, true);
            for (int i = 0; i < tn.Length; i++)
            {
                tvDateien.SelectedNode = tn[i];
                tvDateien.SelectedNode.BackColor = Color.Yellow;
            }

passiert garnix ...
Im Array sind auch keine Elemente... er findet also nix ... (Node ist aber vorhanden)

Thema: Treeview: Selection geht nicht
Am im Forum: GUI: Windows-Forms

Hallo,

nach ewiger Suche bei Google und hier im Forum frage ich einfach mal :)
Ich habe einen Treeview mit Nodes. Die markierte Node soll gespeichert werden. Nun lösche ich alle Nodes aus dem Treeview und fülle ihn mit den gleichen Nodes (test).
Die gespeicherte (alte) Node soll nun ausgewählt werden.
Leider passiert ... garnix. Beim debuggen sieht aber alles korrekt aus.
Hab schon verschiedene Möglichkeiten durchgespielt:

1.


            TreeNode oldSelectedNode = tvDateien.SelectedNode;
            // Löschen und wieder befüllen
            tvDateien.SelectedNode = oldSelectedNode;

2.


            string oldSelectedNode = tvDateien.SelectedNode.FullPath;
            Suchen("");
            foreach (TreeNode node in tvDateien)
            {
                if (node.FullPath == oldSelectedNode)
                {
                    tvDateien.SelectedNode = node;
                }
            }


Danke schon mal!
Gruß
cyn

Thema: Datei-Pfade aufteilen und in TreeView hinzufügen
Am im Forum: GUI: Windows-Forms

Danke erstmal für die Hilfe...

Mit dem Snippet von Dir im anderen Thread funktioniert es (Danke, hab den Thread aber nicht gefunden).

Meine Lösung:
bin schon bisl weiter gekommen. Kurz erweiterte erklärung:
Ich fülle den Treeview aus einem Listview heraus:

            TreeNode RootNode = new TreeNode("Root");
            tvDateien.Nodes.Add(RootNode);

            foreach (ListViewItem livi in liviDateien.Items)
            {
                string file = livi.SubItems[0].Text + ".ema";
                string folder = livi.SubItems[1].Text;
                PopulateTreeView(folder, file, RootNode);
            }

        public void PopulateTreeView(string folder, string file, TreeNode Node)
        {
            TreeNode FolderNode = new TreeNode(Path.GetFileName(folder));
            Node.Nodes.Add(FolderNode);
 
            TreeNode FileNode = new TreeNode(Path.GetFileName(file));
            FolderNode.Nodes.Add(FileNode);
        }

Jetzt wird aber immer nur die letzte Ebene erzeugt und dort die Datei eingefügt.
Ist ein Ordner 2x vorhanden wird dieser auch 2x angezeigt.

Danke nochmal!

Thema: Datei-Pfade aufteilen und in TreeView hinzufügen
Am im Forum: GUI: Windows-Forms

Hi Leute,

ich bräuchte mal ein bisschen Hilfe bzw. einen Wink mit einem großen Zaunpfahl:

Hab ein Array mit Dateien (Pfad + Dateiname + Endung).
Möchte das ganze im Treeview darstellen. Hab versucht jeden string zu splitten und dann die Nodes hinzuzufügen.
Nun hab ich aber das Problem dass die Pfade so aussehen können:
C:\baum\ast\blatt.txt
C:\ast\baum\blatt.txt

hier sollte es 2 Haupt-Nodes geben: baum und ast.

Wie prüfe ich ob es die Node und Unternodes schon gibt?
Hab hier im Forum und Google schon alles durchgeschaut aber nix gefunden.

Wäre über ein Snippet o.Ä. sehr dankbar.

Gruß
Cyn

Thema: [Excel] Einlesen: Leerzellen erkennung
Am im Forum: Office-Technologien

Hallo Leute,
Ich fülle einen Datatable mit Daten aus Excel (OLEDB).
Dann setze ich einen Primärschlüssel auf eine Spalte (Davor entferne ich die Zeilen welche im Primärschlüssel leer sind).
Das funktioniert alles wunderbar.


                    oledbConn.Open();
                    OleDbCommand oledbCmd = new OleDbCommand(sqlExcel, oledbConn);
                    OleDbDataAdapter da = new OleDbDataAdapter(oledbCmd);
                    da.Fill(ds, tblProject); // Hier wirft er den Fehler beim 2. Mal

                    // Leere Zellen entfernen
                    foreach (DataRow rowDelete in ds.Tables[tblProject].Rows)
                    {
                        string srowDelete = rowDelete[3].ToString();
                        if (srowDelete == "")
                        {
                            rowDelete.Delete();
                        }
                    }
                    // Primärschlüssel
                    ds.Tables[tblProject].PrimaryKey = new DataColumn[] { ds.Tables[tblProject].Columns[3] };
                    ds.Tables[tblProject].AcceptChanges();

Nun möchte ich das ganze Rücksetzen damit ich z.B. den Vorgang wiederholen kann:


            ds.Tables[tblProject].PrimaryKey = null;
            ds.Clear();

Wenn ich den Vorgang wiederhole (gleiche Datei einlesen) wirft das Programm einen Fehler welchen ich nicht nachvollziehen kann (verstehen schon):

ConstraintException:
Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.

Das Problem ist dass nun eine Leerzeile vorhanden ist (welche beim 1. Durchlauf aber gefunden und gelöscht wurde).
Ich denke dass der Primärschlüssel das Problem erzeugt.

Was zudem noch suspekt ist:
Wenn ich die Exception abfange und nochmals zurücksetze und den Vorgang (Einlesen) wiederhole, dann funktioniert es.

Warum funktioniert es beim 2. Einlesen der gleichen Datei nicht, aber beim 1 + 3 - nten Mal schon?

Danke schon Mal für eure Hilfe!!

Gruß
Cyn



wenn ich dann alles zurücksetze

Thema: Excel: Format von Zelle/Zeile kopieren
Am im Forum: Office-Technologien

Hallo Leute,
Ich fülle ein Excel-Dokument (welches schon existiert) mit dem Inhalt eines Datatables.

Das funktioniert soweit ganz gut. Nun möchte ich aber für jede neu eingefügte Zeile das Format von der Zeile 4 kopieren bzw. beibehalten (ab Zeile 4 wird der Datatable eingefügt).

Ich werde wohl um eine Range-Instanz nicht drumrum kommen...
(Außer ich kopiere immer die Zeile 4 und füge den Inhalt ein, was aber wohl nicht so eleganz ist)

Leider weiß ich nicht wie ich das Format einer Zelle/Zeile kopieren kann.
In MSDN steht immer nur wie ich einzelne Werte (in den Beispiel bolt) zuweise.
Ich möchte aber von Zelle x,y das Format kopieren und in Zelle n,n einfügen.

Danke schon mal
Gruß
Cyn

Thema: Differenz von Datatable-Inhalten erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@ herbivore:
zum Link: das ist leider nicht genau das wonach ich suche. Ich suche nach einer Möglichkeit die pro Datensatz Artikelnummer und Menge von datagridview 1
- auszulesen
- im anderen datagridview2 zu suchen
- diesen Datensatz auslesen
- Differenz bilden

(das weiterverarbeiten schaff ich allein)

nur fehlt mir hier irgendwie der Gedankenanstoß, da ich sowas noch nie gemacht habe.

Danke schon mal für eure weiter Hilfe (nett hier)

Gruß
Cyn

Thema: Differenz von Datatable-Inhalten erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@inflames2k:
Ich möchte einen Mengenvergleich machen:
1. View
Artikelnummer: 0815
Menge: 5

2. View
Artikelnummer: 0815
Menge: 6

3. View
Artikelnummer: 0815
Menge: -1

(BTW. Meine lieblingsband)

@ herbivore:
Schau ich mir an...

@ ErfinderDesRades
ich behandle alles als Strings (außer bei der Mengenrechnung werde ich wohl Integer brauchen )
Muss da nicht großartig aufpassen, da ich über eine API ne Textfile bekomme und die später wieder zurückschiebe, die Konvertierung erfolgt "auf dem Weg"

@ ALL:
Vielen Dank nochmal. Ich melde mich wieder

Thema: Differenz von Datatable-Inhalten erstellen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo an Alle,

ich kämpf seit 2 Tagen schon damit, darum habe ich mir mal gedacht, ich frage hier nach.
Hab sehr viel gegoogelt und auch schon einige Sachen lösen können.
Meine Aufgabe:
- einlesen von 2 Textdateien in jeweils separaten Datagridview
- Dort gibt es eine ID (Artikelnummer) welche eine Mengenangabe hat (Anzahl); Die restlichen Spalten sind beschreibend und eigentlich nicht zu beachten
- Nun möchte ich die Differenz von Datagridview 1 - Datagridview 2 bilden (Menge)
- ich lese das ganze mit einer OdbcConnection ein damit ich das ganze im Dataset habe

Nun könnt ihr auf dem Screenshot sehen das ich es zumindest geschafft habe die Dateien einzubinden (Dank CodeProject)

Leider weiß ich nichtmal eine Richtung in der ich Suchen/Gehen sollte um die Differenz zu bilden.
Kann mir einer mal paar Schlagwörter/Codeauszüge/Beispiele sagen? Ich möchte hier nicht um fertigen Code fragen aber leider weiß ich garnicht wo ich hinschaun sollte =)

Vielen Dank schonmal
Gruß
Cyn

Thema: GetFileName, wenn Datei nicht vorhanden
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo,
ich habe eine Liste (txt) welche Mehrere Dateien auflistet (Pfad/Dateiname.Extension):
\\Server01\Pfad\Datei.txt

Nun kopiere ich alle Dateien und möchte die Dateien auflisten welche nicht vorhanden sind. Das funktioniert.
Um das ganze übersichtlicher zu gestalten möchte ich In meinem Datagridview 2 Spalten haben:
Dateiname | Kompletter Pfad

Jetzt wollte ich vom Kompletten Pfad den Dateinamen über GetFileName herausfinden. Das funktioniert aber nur wenn die Datei vorhanden.

Jetzt hab schon versucht bei einem bestimmten Zeichen zu Splitten aber die Ordneranzahl ist variabel. Ansonsten hätte ich an n-ten "\" Splitten können.

Hat jemand einen Lösungsansatz?

Thema: Druckereinstellungen - Dialog
Am im Forum: Rund um die Programmierung

@herbivore: Muss dir Recht geben...
Meine Frage war ziemlich ungenau ausgedrückt, was für keinen Hilfreich ist.

Wie geht man vor, wenn man in Windows einen bestimmten Dialog aufrufen möchte? Wie sucht man die .dll Dateien (Google konnte mir nicht weiterhelfen).
Gibt es evtl. einen Eventhandler, der mir anzeigt was gerade ausgeführt wurde und mit welchen Parametern?

Danke

Thema: Druckereinstellungen - Dialog
Am im Forum: Rund um die Programmierung

Vielen, vielen Dank!
Kannst du evtl den Code noch bisl Kommentieren? Habe gestern abend alles mal durchgegoogelt was ich nicht verstanden habe.
Wie war deine Vorgehensweise, um die Funktion zu ermöglichen? Ich wusste garnicht wie ich das anpacken muss...

Danke noch Mal!

Thema: Druckereinstellungen - Dialog
Am im Forum: Rund um die Programmierung

Leider weiß ich nicht mal einen Lösungsansatz.
Denke dass es evtl. über die Registry gehen würde...

Weiß keiner einen Rat? Wäre wirklich wichtig

Thema: Druckereinstellungen - Dialog
Am im Forum: Rund um die Programmierung

Hallo,

ich möchte gerne von meinem Programm aus den Dialog für die Druckereinstellungen öffnen. Dieser ist zu finden unter Systemsteuerung/Drucker und Faxgeräte/[Druckername]/Eigenschaften/Druckereinstellungen.

Der Druckername ist variabel.
Weiß jemand wie ich den Dialog öffnen kann?

Danke schon Mal!
Gruß
Cyn

Thema: Mehrere Druckaufträge über Kommandozeile. Drucker nicht wählbar?
Am im Forum: Rund um die Programmierung

Wunderschönen guten Morgen,
Ich drucke mehrere Dateien über die Kommandozeile in meinem Programm:


        private static void PrintFile(string fullPath)
        {
            FileInfo fileInfo = new FileInfo(fullPath);

            if (!fileInfo.Exists)
            {
                throw new FileNotFoundException();
            }

            var printProcess = new Process();
            printProcess.StartInfo.FileName = fullPath;
            printProcess.StartInfo.UseShellExecute = true;
            printProcess.StartInfo.Verb = "print";
            printProcess.Start();
        }

Leider finde ich nirgends eine Möglichkeit den Druckerauszuwählen. Es wird immer der Standarddrucker verwendet.
Weiß jemand einen Parameter oder eine Möglichkeit den Drucker einzustellen?

Ich habe mich schon in Printdocuments eingelesen, aber da ich unterschiedliche Dateitypen (PDF,XLS) drucken möchte, ist das (nach meinen Wissenstand) die bessere Lösung.

Gruß
cyn

Thema: [gelöst] Abarbeiten eines CheckedListView nach gegebener Reihenfolge (Drucken)
Am im Forum: Rund um die Programmierung

Ich habe die Ehre mein Problem selber zu lösen:
Da die Datei noch geöffnet wird, verzögert sich das ganze so, dass die Druckaufträge durcheinandergeraten.
Darum habe ich eine Pause eingebaut (1sek war zu wenig --> 2sek)

            foreach (string sPrintFile in this.checkedListBox1.CheckedItems)
            {
                PrintFile(sPrintFile);
                System.Threading.Thread.Sleep(2000);
            }

Thema: [gelöst] Abarbeiten eines CheckedListView nach gegebener Reihenfolge (Drucken)
Am im Forum: Rund um die Programmierung

Hallo Leute,

ich möchte gerne alle Dateien in einem Ordner drucken. Das ganze soll noch selektierbar sein in einem CheckedlistView.
Bin nun soweit dass man die Reihenfolge im Listview auch verändern kann...
Leider werden die Dokumente nicht nach der Reihenfolge gedruckt wie sie im Listview sind.
Beispiel:
Hab einen Ordner der 3 Dateien enthält:
test1.txt
test2.txt
test3.txt

wenn ich nun die Reihenfolge änder in:
test3.txt
test2.txt
test1.txt

wird gedruckt:
test2.txt
test1.txt
test3.txt

(Auch wenn die Reihenfolge nicht geändert wird, werden die Dateien nicht alphanumerisch gedruckt).
Ich habe auch den Index überprüft das müsste gehen, leider weiß ich nicht wie das foreach das Steuerelement abarbeitet.
Danke schon mal!

Anbei die Codeteile:

Einlesen der Dateien in ListView:

            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                checkedListBox1.Items.Clear();
                txtPath.Text = folderBrowserDialog1.SelectedPath;

                string[] slFiles = Directory.GetFiles(txtPath.Text);

                foreach (string sFile in slFiles)
                {
                    checkedListBox1.Items.Add(sFile);
                }            
            }

Verändern der Reihenfolge (Item Up)

            int i = this.checkedListBox1.SelectedIndex;
            bool b = false;
            object o = this.checkedListBox1.SelectedItem;

            if (i > 0)
            {
                if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
                {
                    b = true;
                }

                this.checkedListBox1.Items.RemoveAt(i);
                this.checkedListBox1.Items.Insert(i - 1, o);
                this.checkedListBox1.SelectedIndex = i - 1;
                
                if (b == true)
                {
                    checkedListBox1.SetItemCheckState(i-1, CheckState.Checked);
                }
            }

Verändern der Reihenfolge (Item Down)


            int i = this.checkedListBox1.SelectedIndex;
            bool b = false;
            object o = this.checkedListBox1.SelectedItem;

            if (i < this.checkedListBox1.Items.Count - 1)
            {
                if (checkedListBox1.GetItemCheckState(i) == CheckState.Checked)
                {
                    b = true;
                }

                this.checkedListBox1.Items.RemoveAt(i);
                this.checkedListBox1.Items.Insert(i + 1, o);
                this.checkedListBox1.SelectedIndex = i + 1;

                if (b == true)
                {
                    checkedListBox1.SetItemCheckState(i + 1, CheckState.Checked);
                }
            }

Druckfunktion:

        private static void PrintFile(string fullPath)
        {
            FileInfo fileInfo = new FileInfo(fullPath);

            if (!fileInfo.Exists)
            {
                throw new FileNotFoundException();
            }

            var printProcess = new Process();
            printProcess.StartInfo.FileName = fullPath;
            printProcess.StartInfo.UseShellExecute = true;
            printProcess.StartInfo.Verb = "print";
            printProcess.Start();
        }

Alle markierten Dateien drucken:

            foreach (string sPrintFile in this.checkedListBox1.CheckedItems)
            {
                PrintFile(sPrintFile);
            }