Solved

WMI Pause, Resume & Cancel Printing in VB6

Posted on 2010-08-23
3
1,926 Views
Last Modified: 2013-12-20
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
0
Comment
Question by:thenemesiz
  • 2
3 Comments
 
LVL 6

Expert Comment

by:dax_bad
ID: 33499736
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
 
LVL 6

Accepted Solution

by:
dax_bad earned 500 total points
ID: 33499779
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
 

Author Comment

by:thenemesiz
ID: 33500219
that's extremely helpful 'dax bad'

Appreciated!!
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now