0

私のプロジェクトメソッドでは、Crystal ReportのPrintToPrintは正常に機能しますが、ソフトウェアのインストール後、プリンターがマシンに接続されていない場合、この方法によりソフトウェアプロセスがハングします。この問題の解決を手伝ってくれる人はいますか?

4

1 に答える 1

1

私の解決策は、Crystal レポートを開く呼び出しを行う前に、プリンターがオンラインであることを確認する関数を作成することです。

using System.Management;

public bool IsPrinterReady(string printerName)
        {

        bool bprinterOnline = false;       

        ManagementScope scope = new ManagementScope(@"\root\cimv2");
        scope.Connect();

        // Select Printers from WMI Object Collections
        ManagementObjectSearcher printerSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");

        foreach (ManagementObject printer in printerSearcher.Get())
        {

            if (string.IsNullOrEmpty(printer["Name"].ToString()))
            {
                if (printer["Name"].ToString().ToLower().Equals(printerName.ToLower()))
                {

                    switch (printer["WorkOffline"].ToString().ToLower())
                    {
                        case "true":
                            bprinterOnline= true;
                            break;
                        case "false": 
                            bprinterOnline= false;
                            break;
                        default:
                            bprinterOnline= false;
                            break;
                    }
                    break;                     
                }
            }
        }
        return bprinterOnline;
    }
于 2012-09-28T13:00:29.623 に答える