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
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
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.
while (!p.HasExited) ;
Ist nicht dein Ernst, oder?
Dafür gibt's Process.WaitForExit - busy waiting ist hier nicht nötig.