public class CheckPrinterState
{
public static bool CheckPrinter(string printerName1)
{
ManagementScope scope = new ManagementScope(@"\root\cimv2");
scope.Connect();
// Select Printers from WMI Object Collections
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_Printer");
string printerName = "";
foreach (ManagementObject printer in searcher.Get())
{
printerName = printer["Name"].ToString().ToLower();
if (printerName.IndexOf(printerName1.ToLower()) > -1)
{
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
return false;
// printer is offline by user
}
else
{
// printer is not offline
return true;
}
}
}
return false;
}
}