Exemple #1
0
        public void Print(string printer, string printTemplate)
        {
            object          input = printTemplate;
            PrinterSettings ps    = new PrinterSettings();
            bool            test  = ps.IsDefaultPrinter;

            defPrinter = ps.PrinterName;
            bool                   change       = (printer != defPrinter);
            WqlEventQuery          q            = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_PrintJob'");
            ManagementEventWatcher eventWatcher = new ManagementEventWatcher(q);

            if (change)
            {
                Console.WriteLine("{0}: Start printer change to {1}", DateTime.Now.ToString("HH:mm:ss fff"), printer);
                SetDefaultPrinter(printer);
            }
            if (change || NeedEvent)
            {
                eventWatcher.EventArrived += eventWatcher_EventArrived;
                Console.WriteLine("{0}: Printer changed to {1}", DateTime.Now.ToString("HH:mm:ss fff"), printer);
                timer = new System.Threading.Timer(new System.Threading.TimerCallback(StopManagementEventWatcher), eventWatcher, 5000, -1);
                eventWatcher.Start();
            }
            if (axIWebBrowser2.QueryStatusWB(NativeMethods.OLECMDID.OLECMDID_PRINT) == (NativeMethods.OLECMDF.OLECMDF_SUPPORTED | NativeMethods.OLECMDF.OLECMDF_ENABLED))
            {
                axIWebBrowser2.ExecWB(NativeMethods.OLECMDID.OLECMDID_PRINT, NativeMethods.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref input, IntPtr.Zero);
            }
        }