2009-03-25 3 views

Répondre

33

Essayez System.Drawing.Printing.PrinterSettings.InstalledPrinters énumérer.

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

Cela ne fonctionne pas très bien. J'ai eu une meilleure expérience sur plus de machines avec

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)); 
} 
Questions connexes