Some times our application needs to show the status of the printer, for that purpose we can use System.Management Namespace for getting printer status
'btnStatus is a button.
'tbPrinterStatus is a rich text box.
Private Sub btnStatus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStatus.Click
Dim scope As ManagementScope = New ManagementScope("\root\cimv2")
scope.Connect()
Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT * FROM Win32_Printer")
Dim collection As ManagementObjectCollection = searcher.Get
For Each printer As ManagementObject In collection
'MessageBox.Show(printer("WorkOffline").ToString(), cbPrinters.Text)
If printer("Name").ToString() = cbPrinters.Text Then
tbPrinterStatus.Clear()
If printer("WorkOffline").ToString().ToLower().Equals("true") Then
tbPrinterStatus.AppendText("Printer : Offline")
Else
tbPrinterStatus.AppendText("Printer : Online")
End If
tbPrinterStatus.AppendText(vbCrLf)
tbPrinterStatus.AppendText("PrinterStatus :")
tbPrinterStatus.AppendText(printer("PrinterStatus").ToString())
tbPrinterStatus.AppendText(vbCrLf)
tbPrinterStatus.AppendText("ExtendedDetectedErrorState :")
tbPrinterStatus.AppendText(printer("ExtendedDetectedErrorState").ToString())
tbPrinterStatus.AppendText(vbCrLf)
tbPrinterStatus.AppendText("DetectedErrorState :")
tbPrinterStatus.AppendText(printer("DetectedErrorState").ToString())
tbPrinterStatus.AppendText(vbCrLf)
tbPrinterStatus.AppendText("PrinterState :")
tbPrinterStatus.AppendText(printer("PrinterState").ToString())
End If
Next
End Sub
Note: By Using this code you will never get exact printer status,it will display the status from the printer drivers not from device .
Thank u very much for your simple code. This only I am searching for many time for my project
ReplyDeleteI was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information. renting impresoras zaragoza
ReplyDelete