en mi aplicación (Windows Seven, VS2010) tengo que disminuir un contador de crédito después de imprimir correctamente una imagen. De todos modos, antes de comenzar todo el proceso, me gustaría saber sobre el estado de la impresora para alertar al usuario sobre la salida del papel, el atasco de papel, etc. Ahora, mirando a mi alrededor encontré varios ejemplos que usan Windows WMI pero ... nunca funciona. Utilizando el fragmento THIS, por ejemplo, el estado de la impresora siempre está listo, también si retiro el papel, abra la tapa ... apague la impresora.C# compruebe el estado de la impresora
El estado de la impresora siempre es bueno también ahora, que estoy probando desde la oficina la impresora que está cómodamente apagada en casa. ¿Debo detonar el dispositivo con dinamita para tener un estado de error de la impresora?
Este es el código que he usado
ManagementObjectCollection MgmtCollection;
ManagementObjectSearcher MgmtSearcher;
//Perform the search for printers and return the listing as a collection
MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer");
MgmtCollection = MgmtSearcher.Get();
foreach (ManagementObject objWMI in MgmtCollection)
{
string name = objWMI["Name"].ToString().ToLower();
if (name.Equals(printerName.ToLower()))
{
int state = Int32.Parse(objWMI["ExtendedPrinterStatus"].ToString());
if ((state == 1) || //Other
(state == 2) || //Unknown
(state == 7) || //Offline
(state == 9) || //error
(state == 11) //Not Available
)
{
throw new ApplicationException("hope you are finally offline");
}
state = Int32.Parse(objWMI["DetectedErrorState"].ToString());
if (state != 2) //No error
{
throw new ApplicationException("hope you are finally offline");
}
}
}
Dónde nomImpr 'se recibe como parámetro.
Gracias en consejo.
Cuando encuentre algo que funcione, recuerde que tiene que hacer frente a todas o algunas de estas situaciones que surjan * como * también imprima: la dinamita puede sonar entre verificar el estado y realmente comenzar el trabajo de impresión. –
puede culpar a WMI. la mayoría de los controladores de impresora no actualizan correctamente el estado de la impresora para que WMI la seleccione. lo hemos enfrentado varias veces –
¿a qué impresora (s) estás mirando? –