private static bool ChangePrinter(string printerName, PRINTER_CONTROL state) { IntPtr hPrinter; int iRes; PRINTER_DEFAULTS printerDefaults = new PRINTER_DEFAULTS(); printerDefaults.pDatatype = null; printerDefaults.pDevMode = null; printerDefaults.DesiredAccess = PRINTER_ALL_ACCESS; iRes = OpenPrinter(printerName, out hPrinter, printerDefaults); if (iRes == 0) { Console.WriteLine("[-] OpenPrinter failed: {0}", Marshal.GetLastWin32Error()); return(false); } iRes = SetPrinter(hPrinter, 0, IntPtr.Zero, state); if (iRes == 0) { Console.WriteLine("[-] SetPrinter failed: {0}", Marshal.GetLastWin32Error()); ClosePrinter(hPrinter); return(false); } ClosePrinter(hPrinter); return(true); }
private static extern int SetPrinter( IntPtr hPrinter, uint Level, IntPtr pPrinter, PRINTER_CONTROL Command);