@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Used to enumerate printer-information. See PrinterEnumFlags for the flags. See [PRINTER_INFO_2] for the structure for level 2 info. !!!!C# Signature: [DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool EnumPrinters(PrinterEnumFlags Flags, string Name, uint Level, IntPtr pPrinterEnum, uint cbBuf, ref uint pcbNeeded, ref uint pcReturned); !!!!User-Defined Types: [PRINTER_INFO_2] [PrinterEnumFlags] !!!!Notes: You will need to import System.Runtime.InteropServices !!!!Tips & Tricks: Please add some! !!!!Sample Code: private const int ERROR_INSUFFICIENT_BUFFER = 122; public static PRINTER_INFO_2[] enumPrinters(PrinterEnumFlags Flags) { uint cbNeeded = 0; uint cReturned = 0; if (EnumPrinters(Flags, null, 2, IntPtr.Zero, 0, ref cbNeeded, ref cReturned)) { return null; } int lastWin32Error = Marshal.GetLastWin32Error(); if (lastWin32Error == ERROR_INSUFFICIENT_BUFFER) { IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded); if (EnumPrinters(Flags, null, 2, pAddr, cbNeeded, ref cbNeeded, ref cReturned)) { PRINTER_INFO_2[] printerInfo2 = new PRINTER_INFO_2[cReturned]; int offset = pAddr.ToInt32(); Type type = typeof(PRINTER_INFO_2); int increment = Marshal.SizeOf(type); for (int i = 0; i < cReturned; i++) { printerInfo2[i] = (PRINTER_INFO_2)Marshal.PtrToStructure(new IntPtr(offset), type); offset += increment; } Marshal.FreeHGlobal(pAddr); return printerInfo2; } lastWin32Error = Marshal.GetLastWin32Error(); } throw new Win32Exception(lastWin32Error); } !!!!Alternative Managed API: PrinterSettings.InstalledPrinters, but this only gives the name of the printers. Documentation: EnumPrinters@msdn on MSDN
Edit winspool.EnumPrin...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.