2016-04-29 139 views
1

我想检查我的defaultprinter是,如果它不是,我想选择另一台打印机。我使用下面的代码来检查它是否打开,但它始终返回true。 任何帮助,将不胜感激printDialog.PrinterSettings.IsValid返回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 - 使用在你的代码的参考:

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

+0

我有我的默认打印机的名称,但当默认打印机关闭打印文本进入队列,我想要的是检查它是否关闭,然后选择另一台打印机。 –

+0

谢谢Abdellah Oumghar。正是我想要的.. –