Automatic Printing

Summary: Learn about automatic printing in a Windows platform using WScript.

Automatic printing is a subject you will find a lot of content about on the internet – but most of it is useless. It’s a massive collection of try-this-try-that. I was searching for some descent content on how to do scheduled automatic printing but spent far more time that I would like to. Finally I arrive at this code:

Option Explicit
Private Const OLECMDID_PRINT = 6 
Private Const OLECMDEXECOPT_DONTPROMPTUSER = 2 
Private Const READYSTATE_COMPLETE = 4 
Private Const PRINT_DONTBOTHERUSER = 1
Private Const PRINT_WAITFORCOMPLETION = 2

Dim pValIn, pValOut

With CreateObject("InternetExplorer.Application")
	'.visible=true
	.Navigate "http://yourpage/"
	Do Until .ReadyState = READYSTATE_COMPLETE AND NOT .Busy
	loop

	pvalIn = PRINT_WAITFORCOMPLETION XOR PRINT_DONTBOTHERUSER
	pvalOut = ""
	Call .ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER, pValIn, pValOut)
	.Quit
End With 

There something important to note here. The following lines are necessary for Windows 2003 Enterprise server:

pvalIn = PRINT_WAITFORCOMPLETION XOR PRINT_DONTBOTHERUSER
pvalOut = ""
Call .ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER, pValIn, pValOut) 

On a regular Windows XP machine you could get by simply doing:

Call .ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER)

This code works by opening a Internet Explorer window and loading a page and printing that page. Note that if that file loads a PDF file or an excel document then this won’t work. This only works in plain HTML documents.

Comments