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 ループが想定されていない限り、このメソッドを呼び出してプリンターを再列挙できますか??

ありがとう

4

1 に答える 1

1

タイマーを設定して詳細を取得することで問題を解決しました。

于 2013-05-10T05:49:06.470 に答える