Question

Printing Spool File

Asked by: WoodyRoundUp

Hi guys. Is there any way to read the printer spool file? In other way is that, is there any way to read the buffer of the printer? If there is, how's the format and how do we read? Thanks for your answer.

Me

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2000-11-30 at 23:28:51ID12038800
Topic

C++ Programming Language

Participating Experts
3
Points
50
Comments
6

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Different print-spool?
    WordPerfect-8 provides a handy print spooling feature for my HP855Cse I wish I could use other places. It has a separate tab for "2-sided printing" allowing you to print odd numbered pages then print even-numbered pages (pausing to flip over the page feed, of cours...
  2. spool 32
    spool gpf in krnl32.dll
  3. spool printer
    How can I delete spool print , SPL extension is the spool printer file or not
  4. Slow Print Spooling
    Print spooling (apparently) slowed down suddenly on a Windows 2000 system from printing starting within seconds to now taking 15 seconds or longer for printing to start, and it doesn't matter which of three printers on the network I attempt printing to. I've reinstalled the ...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: graham_kPosted on 2000-12-01 at 02:14:10ID: 5707609

well, the spool file is just a file like any other, so you ought  to be able to open it to read (better copy it first, as it may be deleted after printing, before you are finished). You might want to try to find out how to monitor it so that you know when a new spool request is made.

I would imagine that abolutely none or very, very, few printers would let you read their buffer. What's the use of it?  Even if they did,  you'd have a different format for each printer (unless they use PostScript). You have this problem too with the printer spool.

Maybe if you tell us what you are trying to achieve, we can think fo something to help...

 

by: WoodyRoundUpPosted on 2000-12-01 at 03:27:22ID: 5708633

I was actually trying to get the information from the printer so I can know exactly how many printing has been instructed by each computer. And I am able to calculate the cost without counting on the amount of printing.
Thanks for your reply, graham_k. :)
I

 

by: graham_kPosted on 2000-12-01 at 05:03:19ID: 5709929

well, in that case, you either need to intercept printer calls or create your own application which logs who the user is & the quantity of printing and then forwards the request to the printer.

 

by: WoodyRoundUpPosted on 2000-12-01 at 06:06:57ID: 5711257

I am going to create my own application. but, the problem is that how if they want to print directly from either internet explorer, netscape, or microsoft word? can i pass my instruction to the printer? thanks for ur reply again.

 

by: FengYuanPosted on 2000-12-01 at 22:45:42ID: 5728850

There is no easy answer to to your 'easy' question.

The right approach is writing a language monitor and change printer driver setting from control panel to use the language monitor. You can find sample code from Microsoft DDK.

Within a language monitor, you can get data before sending to printer. So you have a chance to exam it, add data to it, or change it.

But, different printers uses totally different printer language, for example, Postscript, PCL3, PCL5, PCL5, ESC/2, HPGL, .... So it's very hard to have a generic solution.

So try to narrow your scope to make it easier.

 

by: CoolBreezePosted on 2000-12-02 at 19:31:45ID: 5738690

Assuming you are using windows (which seems valid),

you can use ReadPrinter to read the buffer of the printer. The declaration of ReadPrinter is as follows:

BOOL ReadPrinter(
  HANDLE hPrinter,      // handle to printer object
  LPVOID pBuf,          // data buffer
  DWORD cbBuf,          // size of data buffer
  LPDWORD pNoBytesRead  // bytes received
);

* Note however that this will only work if the printer is bidirectional, that is it allows it's buffer to be read.

But from the context of your question, i think you are just trying to know how many printing jobs are there.

This can be done using GetPrinter or EnumPrinters. If you only have one printer, you can use GetPrinter to get the number of print jobs else use EnumPrinters to get the print jobs of all the printers.The declaration of GetPrinter is:

BOOL GetPrinter(
  HANDLE hPrinter,    // handle to printer
  DWORD Level,        // information level
  LPBYTE pPrinter,    // printer information buffer
  DWORD cbBuf,        // size of buffer
  LPDWORD pcbNeeded   // bytes received or required
);

Put Level as 2. Get the handle to printer by calling OpenPrinter.
The declaration is as follows.

BOOL OpenPrinter(
  LPTSTR pPrinterName,         // printer or server name
  LPHANDLE phPrinter,          // printer or server handle
  LPPRINTER_DEFAULTS pDefault  // printer defaults
);

GetPrinter will return a PRINTER_INFO_2 structure in the buffer pointed to by pPrinter. The PRINTER_INFO_2 structure is as follows:

typedef struct _PRINTER_INFO_2 {
  LPTSTR    pServerName;
  LPTSTR    pPrinterName;
  LPTSTR    pShareName;
  LPTSTR    pPortName;
  LPTSTR    pDriverName;
  LPTSTR    pComment;
  LPTSTR    pLocation;
  LPDEVMODE pDevMode;
  LPTSTR    pSepFile;
  LPTSTR    pPrintProcessor;
  LPTSTR    pDatatype;
  LPTSTR    pParameters;
  PSECURITY_DESCRIPTOR pSecurityDescriptor;
  DWORD     Attributes;
  DWORD     Priority;
  DWORD     DefaultPriority;
  DWORD     StartTime;
  DWORD     UntilTime;
  DWORD     Status;
  DWORD     cJobs;
  DWORD     AveragePPM;
} PRINTER_INFO_2, *PPRINTER_INFO_2;

The value you want is cJobs.

It seems however that your printer works on a network, and many computers can request printing. I suppose there is a print server to handle all these requests. Therefore all the spooling will be done at a centralized location i.e. the print server. I believe all you have to do is use OpenPrinter on that printer and use the above steps.

If however you have more than one printer connected to the network, you will have to get all the jobs on all the printers and add them together to get the total number of jobs. It is good if you know all the names of the Printers on the network, then you can repeat the steps for all the printers.

It is however worthwhile to consider using EnumPrinters instead.
The declaration of EnumPrinters is as follows:

BOOL EnumPrinters(
  DWORD Flags,         // printer object types
  LPTSTR Name,         // name of printer object
  DWORD Level,         // information level
  LPBYTE pPrinterEnum, // printer information buffer
  DWORD cbBuf,         // size of printer information buffer
  LPDWORD pcbNeeded,   // bytes received or required
  LPDWORD pcReturned   // number of printers enumerated
);

Again put Level as 2. Put Flags as PRINTER_ENUM_LOCAL, Name as NULL. First call EnumPrinters with cbBuf = 0. The function will fail, but pcbNeeded will point to the size of the buffer needed (that is the value cbBuf has to take). Then call EnumPrinters again with the correct cbBuf value. It will return an array of  PRINTER_INFO_2 structures pointed to by pPrinterEnum. Yes, you want the cJobs in the structures.

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...