Sign in to follow this  
Followers 0
flyingboz

enumerate printer queue

5 posts in this topic

Have a need to monitor printer queue status, such that I don't perform a new task until the document last printed has completed.

Ideally, I'd like to be able to

1) enumerate the printer list, seeing how many jobs there are currently in queue

2) determine printer status -- at least functional / non

3) delete individual jobs.

I need the methods to work at least from xp to win7, and preferably would include w2k server.

TIA

Only reference in the forums in my pre-post searches was dealing with the printui user interface, I need to hide all that from the user.


Reading the help file before you post... Not only will it make you look smarter, it will make you smarter.

Share this post


Link to post
Share on other sites



Maybe something to look at:

$intPrinters = 1

$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Printer")

For $objItem In $colItems
    if $objItem.Queued > 0 or $objItem.PrinterStatus <> 3 or $objItem.PrinterState <> 0 Then
    ConsoleWrite("Printers on " _
             & $objItem.name & ", Printer Number: " & $intPrinters & @LF & _
            "====================================" & @LF & _
            "Availability: " & $objItem.Availability & @LF & _
            "Description: " & $objItem.Description & @LF & _
            "Printer: " & $objItem.DeviceID & @LF & _
            "Driver Name: " & $objItem.DriverName & @LF & _
            "Port Name: " & $objItem.PortName & @LF & _
            "Printer State: " & $objItem.PrinterState & @LF & _
            "Printer Status: " & $objItem.PrinterStatus & @LF & _
            "PrintJobDataType: " & $objItem.PrintJobDataType & @LF & _
            "Print Processor: " & $objItem.PrintProcessor & @LF & _
            "Spool Enabled: " & $objItem.SpoolEnabled & @LF & _
            "Separator File: " & $objItem.SeparatorFile & @LF & _
            "Queued: " & $objItem.Queued & @LF & _
            "Status: " & $objItem.Status & @LF & _
            "StatusInfo: " & $objItem.StatusInfo & @LF & _
            "Published: " & $objItem.Published & @LF & _
            "Shared: " & $objItem.Shared & @LF & _
            "ShareName: " & $objItem.ShareName & @LF & _
            "Direct: " & $objItem.Direct & @LF & _
            "Location: " & $objItem.Location & @LF & _
            "Priority: " & $objItem.Priority & @LF & _
            "Work Offline: " & $objItem.WorkOffline & @LF & _
            "Horizontal Res: " & $objItem.HorizontalResolution & @LF & _
            "Vertical Res: " & $objItem.VerticalResolution )
    ConsoleWrite(@lf & "************************************************************************************" & @lf)
    EndIf
    $intPrinters = $intPrinters + 1
Next

Visit the SciTE4AutoIt3 Download page for the latest versions        Beta files                                                          Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Maybe something to look at:

$intPrinters = 1

$objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
$colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_Printer")

For $objItem In $colItems
    if $objItem.Queued > 0 or $objItem.PrinterStatus <> 3 or $objItem.PrinterState <> 0 Then
    ConsoleWrite("Printers on " _
             & $objItem.name & ", Printer Number: " & $intPrinters & @LF & _
            "====================================" & @LF & _
            "Availability: " & $objItem.Availability & @LF & _
            "Description: " & $objItem.Description & @LF & _
            "Printer: " & $objItem.DeviceID & @LF & _
            "Driver Name: " & $objItem.DriverName & @LF & _
            "Port Name: " & $objItem.PortName & @LF & _
            "Printer State: " & $objItem.PrinterState & @LF & _
            "Printer Status: " & $objItem.PrinterStatus & @LF & _
            "PrintJobDataType: " & $objItem.PrintJobDataType & @LF & _
            "Print Processor: " & $objItem.PrintProcessor & @LF & _
            "Spool Enabled: " & $objItem.SpoolEnabled & @LF & _
            "Separator File: " & $objItem.SeparatorFile & @LF & _
            "Queued: " & $objItem.Queued & @LF & _
            "Status: " & $objItem.Status & @LF & _
            "StatusInfo: " & $objItem.StatusInfo & @LF & _
            "Published: " & $objItem.Published & @LF & _
            "Shared: " & $objItem.Shared & @LF & _
            "ShareName: " & $objItem.ShareName & @LF & _
            "Direct: " & $objItem.Direct & @LF & _
            "Location: " & $objItem.Location & @LF & _
            "Priority: " & $objItem.Priority & @LF & _
            "Work Offline: " & $objItem.WorkOffline & @LF & _
            "Horizontal Res: " & $objItem.HorizontalResolution & @LF & _
            "Vertical Res: " & $objItem.VerticalResolution )
    ConsoleWrite(@lf & "************************************************************************************" & @lf)
    EndIf
    $intPrinters = $intPrinters + 1
Next

I'm unable to get this working. When I run this code, it doesn't do anything. Any ideas? (Win7)

Share this post


Link to post
Share on other sites

Jos' demo ran fine for me on Vista Business 32bit. You might want to comment out his If/EndIf lines to see all printers regardless of status, then decide how to filter later.

:)


Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Ah hah! I'm an idiot, I was doing something so stupid that I'm embarrassed to even admit it, lol. It is working now. Thanks!

Edited by Lemures

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0