internal static void AddPrinter(string printerName, string portName, string driverName) { var pi2 = new PRINTER_INFO_2 { pPrinterName = printerName, pPortName = portName, pDriverName = driverName, }; var handle = NativeMethods.AddPrinter(null, 2, ref pi2); if (handle == IntPtr.Zero) { throw new Win32Exception(); } NativeMethods.ClosePrinter(handle); }
public void SetPrinter(PRINTER_INFO_2 printerInfo2, int command) { var size = Marshal.SizeOf <PRINTER_INFO_2>(); var address = Marshal.AllocHGlobal(size); try { Marshal.StructureToPtr(printerInfo2, address, false); if (NativeMethods.SetPrinter(handle, 2, address, command) == 0) { throw new Win32Exception(); } } finally { Marshal.FreeHGlobal(address); } }
internal static extern IntPtr AddPrinter(string pName, uint level, [MarshalAs(UnmanagedType.Struct)] ref PRINTER_INFO_2 pi2);