Visual Basic.NET - vb.net obtener estado de impresora ayuda

 
Vista:

vb.net obtener estado de impresora ayuda

Publicado por shago (2 intervenciones) el 23/06/2013 15:07:55
buenas, he estado intentando conocer el estado de la impresora, mas precisamente necesito saber si tiene tinta, papel, o si un papel esta atascado... tras mucho buscar he encontrado estos

Private Enum DetectedErrorState
No_Error = 2
No_hay_papel = 4
No_Toner = 6
papel_atascado = 8
End Enum

Dim localprintserver As LocalPrintServer 'obtiene impresora predeterminada

Private Function PrinterStatusToString(ByVal ps As DetectedErrorState) As String
Dim s As String
Select Case ps
Case DetectedErrorState.No_Error
s = "No_Error"
Case DetectedErrorState.No_hay_papel
s = "Se ha agotado el papel de la impresora."
Case DetectedErrorState.No_Toner
s = "Se ha agotado el tóner de la impresora."
Case DetectedErrorState.papel_atascado
s = "Se ha atascado el papel en la impresora."
Case Else
s = "La impresora no esta disponible."
End Select
Return s
End Function

Private Sub estado()
Try
strPrintServer = "localhost"
WMIObject = "winmgmts://" & strPrintServer
PrinterSet = GetObject(WMIObject).InstancesOf("win32_Printer")
Dim Printer As Object
For Each Printer In PrinterSet
'If localprintserver.Name.Equals(Printer.name) Then
//si lo descomento me arroja error (System.noReferenciaException)
estado = Printer
MessageBox.Show(Printer.name.ToString + " " + Printer.DetectedErrorState.ToString)
'End If
Next Printer

Dim alerta As String = PrinterStatusToString(estado.DetectedErrorState)
If estado.PrinterStatus = DetectedErrorState.No_Error Then
MessageBox.Show("impresora ok")
Else
MessageBox.Show(alerta)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub

el problema es que siempre me muestra estado 0 con todas las impresoras.
alguien podria decirme a que se debe¿, que estoy haciendo mal¿

desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder