2016-04-29 113 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。正是我想要的.. –