2009-03-25 97 views

Respuesta

33

Trate de enumerar System.Drawing.Printing.PrinterSettings.InstalledPrinters.

using System.Drawing.Printing; 
string GetDefaultPrinter() 
{ 
    PrinterSettings settings = new PrinterSettings(); 
    foreach (string printer in PrinterSettings.InstalledPrinters) 
    { 
     settings.PrinterName = printer; 
     if (settings.IsDefaultPrinter) 
      return printer; 
    } 
    return string.Empty; 
} 
1

Esto no funciona demasiado bien. Tengo una mejor experiencia en más máquinas con

DllImport("winspool.drv", CharSet=CharSet.Auto, SetLastError=true)] 
public static extern bool GetDefaultPrinter(StringBuilder pszBuffer, ref int size); 

StringBuilder dp = new StringBuilder(256); 
int size = dp.Capacity; 
if (GetDefaultPrinter(dp, ref size)) { 
     Console.WriteLine(String.Format("Printer: {0}, name length {1}", dp.ToString().Trim(), size)); 
} else { 
    int rc = GetLastError(); 
    Console.WriteLine(String.Format("Failed. Size: {0}, error: {1:X}", size, rc)); 
} 
Cuestiones relacionadas