我想检查我的defaultprinter是否打开,如果它没有打开,我想选择另一台打印机。我使用下面的代码来检查它是否打开,但它总是返回true。 任何帮助将不胜感激
bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsValid;
答案 0 :(得分:2)
如果要检查打印机是否为默认打印机,可以使用PrintDialog
,如下所示:
printDialog.PrinterSettings.PrinterName = "MyDefaultPrinterName";
bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsDefaultPrinter;
如果要检查打印机是否已打开(已连接),您可以使用WMI class
,如下所示:
1-将参考System.Management.dll
添加到您的项目中。
2-在代码中使用Reference:
using System.Management;
3 - 使用此代码检查打印机是否在线(已连接):
bool printerIsOnline = true;
string printerName = "MyPrinterName";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerName);
ManagementObjectSearcher searcherPrinters = new ManagementObjectSearcher(query);
foreach (ManagementObject printer in searcherPrinters.Get())
{
printerIsOnline = !printer["WorkOffline"].ToString().Equals("True");
}
使用此代码,您可以访问打印机的许多属性: