Exemplo n.º 1
0
        private void InstallPrinter(String printerName, String printerPortName, String printerDriverName)
        {
            PrinterMonitorInstallerPInvoke.PRINTER_INFO_2 pInfo = new PrinterMonitorInstallerPInvoke.PRINTER_INFO_2
            {
                pPrinterName    = printerName,
                pPortName       = printerPortName,
                pDriverName     = printerDriverName,
                pPrintProcessor = "WinPrint",
                pShareName      = printerName,
                pDatatype       = "RAW",
                pComment        = printerName,
                Priority        = 1,
                DefaultPriority = 1
            };


            IntPtr hPrt = PrinterMonitorInstallerPInvoke.AddPrinter("", 2, ref pInfo);

            if (hPrt == IntPtr.Zero)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (PrinterMonitorInstallerPInvoke.ClosePrinter(hPrt) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }
        }
Exemplo n.º 2
0
        private void RemoveJobs(String printerName)
        {
            IntPtr hPrinter;

            PrinterMonitorInstallerPInvoke.PRINTER_DEFAULTS defaults = new PrinterMonitorInstallerPInvoke.PRINTER_DEFAULTS
            {
                DesiredAccess = 0x000F000C, //PRINTER_ALL_ACCESS
                pDatatype     = IntPtr.Zero,
                pDevMode      = IntPtr.Zero
            };


            if (PrinterMonitorInstallerPInvoke.OpenPrinter(printerName, out hPrinter, ref defaults) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (hPrinter == IntPtr.Zero)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            //3 == PRINTER_CONTROL_PURGE => Entfernt alle Jobs!
            if (PrinterMonitorInstallerPInvoke.SetPrinter(hPrinter, 0, IntPtr.Zero, PrinterMonitorInstallerPInvoke.PRINTER_CONTROL_PURGE) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (PrinterMonitorInstallerPInvoke.ClosePrinter(hPrinter) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }
        }
Exemplo n.º 3
0
        private void UninstallPrinter(String printerName)
        {
            IntPtr hPrinter;

            PrinterMonitorInstallerPInvoke.PRINTER_DEFAULTS defaults = new PrinterMonitorInstallerPInvoke.PRINTER_DEFAULTS
            {
                DesiredAccess = 0x000F000C,  //PRINTER_ALL_ACCESS
                pDatatype     = IntPtr.Zero,
                pDevMode      = IntPtr.Zero
            };


            if (PrinterMonitorInstallerPInvoke.OpenPrinter(printerName, out hPrinter, ref defaults) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (hPrinter == IntPtr.Zero)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (PrinterMonitorInstallerPInvoke.DeletePrinter(hPrinter) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }

            if (PrinterMonitorInstallerPInvoke.ClosePrinter(hPrinter) == false)
            {
                int errno = Marshal.GetLastWin32Error();
                throw new Win32Exception(errno);
            }
        }