Laden...

Mehrere Druckaufträge über Kommandozeile. Drucker nicht wählbar?

Erstellt von cyntonix vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.199 Views
C
cyntonix Themenstarter:in
37 Beiträge seit 2009
vor 14 Jahren
Mehrere Druckaufträge über Kommandozeile. Drucker nicht wählbar?

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

N
228 Beiträge seit 2005
vor 14 Jahren

ShellExecute und 'print' drucken immer auf den Standarddrucker.

Möglichkeit 1: Standarddrucker auslesen und merken, Standarddrucker umstellen, 'print' durchführen, Standarddrucker zurücksetzen.

Möglichkeit 2: Für jeden Dateityp eine spezielle Fernsteuerung der Anwendungen schreiben, dann kann man auch meist den Drucker wählen.

Variante 1 ist wahrscheinlich einfacher und universeller.

Schöne Grüße,
Mario

R
100 Beiträge seit 2009
vor 14 Jahren

Hier ist eine Variante mit Print Command

public void Print(FileInfo file)
{
    ProcessStartInfo psi = new ProcessStartInfo();
    psi.FileName = "print";
    psi.Arguments = string.Format("/D:\"{0}\" \"{1}\"", Printer, file.FullName);
    psi.CreateNoWindow = true;
    psi.UseShellExecute = false;

    Process p = new Process();
    p.StartInfo = psi;
    p.Start();

    while (!p.HasExited) ;
}

Printer variable ist der Name des Druker dass du nutzen möchtest. Für mehere Details von Print command kannst du hier schauen http://www.computerhope.com/printhlp.htm.

5.742 Beiträge seit 2007
vor 14 Jahren
while (!p.HasExited) ;  

Ist nicht dein Ernst, oder?

Dafür gibt's Process.WaitForExit - busy waiting ist hier nicht nötig.