打印机连接事件

时间:2013-04-10 06:42:36

标签: c# printers

我正在设计一个需要识别打印机是否已连接的应用程序。我知道WMI枚举连接的打印机的方法。但是,如果打印机在应用程序启动后连接,该怎么办?我们有任何活动或API吗?或者我必须经常使用WMI代码检查?

为了简单起见,我尝试了LocalPrintServer类:

PrintQueue printQueue = null;

            LocalPrintServer localPrintServer = new LocalPrintServer();

            // Retrieving collection of local printer on user machine
            PrintQueueCollection localPrinterCollection =
                localPrintServer.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections });

            System.Collections.IEnumerator localPrinterEnumerator =
                localPrinterCollection.GetEnumerator();

            while(localPrinterEnumerator.MoveNext())
            {
                // Get PrintQueue from first available printer
                printQueue = (PrintQueue)localPrinterEnumerator.Current;                       

                if (!printQueue.IsOffline)
                {

                    string s = "Printer found " + printQueue.FullName.ToString();
                    listBox1.Items.Add(s);
                    bDeviceFound = true;
                    button1.Enabled = bDeviceFound;


                }

您知道它将显示在应用程序启动时运行的已安装打印机。问题是它无法确定应用程序启动后是否连接了打印机。如果我们有任何事件,我可以调用此方法重新枚举打印机,除非我想要一个线程或while循环??

由于

1 个答案:

答案 0 :(得分:1)

通过设置定时器来提取详细信息来解决此问题。