WMI Pause, Resume & Cancel Printing in VB6

I would like to use VB6 to:

- Monitor default printer
- Pause any print job
- Run a sub
- If sub returns true then resume printing
- If not the cancel the print job

The default printer is a receipt printer that doesn't print any other documents.

I have successfully identified the default printer using WMI and can call the printer by a sub:

Dim objPrinter As Printer

Set objPrinter = GetDefaultPrinter()
MsgBox "Default printer is: " + objPrinter.DeviceName
MsgBox "Driver name is: " + objPrinter.DriverName
MsgBox "Port is: " + objPrinter.Port
Set objPrinter = Nothing

Can someone please help me pause any jobs on the printer till the above steps are followed

Thanks a Billion
thenemesizAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
dax_badConnect With a Mentor Commented:
Or something like this?
strComputer = "."	replace . with dns name or IP of print server or leave if script is running on the print server

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =  objWMIService.ExecQuery _
    ("Select * from Win32_PrintJob")

For Each objPrintJob in colPrintJobs 

	objPrintJob.pause

	If checkSomething(test) = True Then
 		objPrintJob.Resume 
	Else
		objPrintJob.Cancel
	End if
Next

Function checkSomething(ByVal test)
'check something
If test.something = someValue Then
	checkPrintJob = True
Else
	checkPrintJob = False
End Function

Set objWMIService = Nothing
Set colPrintJobs = Nothing 
Wscript.Quit

Open in new window

0
 
dax_badCommented:
If you now how to write VBscripts, here's a few code snippets that will help you with Printers:
http://www.activxperts.com/activmonitor/windowsmanagement/adminscripts/printing/servers/#PausePrintJobs.htm



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrintJobs =  objWMIService.ExecQuery _
    ("Select * from Win32_PrintJob")
For Each objPrintJob in colPrintJobs 
    objPrintJob.Pause    'Pauses All jobs in the collection
    objPrintJob.Resume    'Resumes all jobs in the collection
Next

Open in new window

0
 
thenemesizAuthor Commented:
that's extremely helpful 'dax bad'

Appreciated!!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.