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