我想检查一下我的默认打印机是否打开,如果没有打开,我想选择另一台打印机。我使用以下代码检查其是否打开,但始终返回true。
任何帮助,将不胜感激

bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsValid;

最佳答案

如果要检查打印机是否为默认打印机,可以按以下方式使用PrintDialog

printDialog.PrinterSettings.PrinterName = "MyDefaultPrinterName";
bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsDefaultPrinter;


如果要检查打印机是否已打开(已连接),可以使用WMI class像这样:

1-将引用System.Management.dll添加到您的项目。

2-在代码中使用参考:

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");
}


通过此代码,您可以访问打印机的许多属性:

All the properties of the printer

10-04 16:35