2013-04-10 2 views
2

Я разрабатываю приложение, которое необходимо определить, подключен ли принтер. Я знаю методы 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?

Благодаря

+0

Вы пробовали _anything_? Покажите свою работу. –

+0

Пожалуйста, см. Мою работу. – Zigma

+0

. Я не могу напрямую помочь вам, но попробую google для любых записей/кода блога Duncan Edwards Jones. Он, кажется, правильный гуру .net-printing. – svenv

ответ

1

Решенный вопрос, установив таймер, чтобы вытащить детали.

Смежные вопросы