Home  docPrint  docPrint-Pro  Support  ScreenShots

Retrieve Printer Status Using Windows API

docPrint and docPrint Pro are virtual printer software that saves any document you print as 20+ formats. Below are some examples that can help you to accomplish your task with docPrint Printer.

Download Evaluation Version of docPrint SDK
Purchase docPrint SDK

#include <Winspool.h>

DWORD GetPrinterStatus( char* szPrnName )
{
  HANDLE          hHandle = 0;   // Handle of the printer

  DWORD           dwStatus = 0;  // Printer status we should receive
                                 // Few values for example:
                                 // 0x00000000 - ready
                                 // 0x00000001 - paused
                                 // 0x00000002 - error
                                 // 0x00000200 - busy
                                 // 0x00000400 - printing
                                 // for more info please see MSDN

  DWORD           dwSize = 0;    // Size of memory we should
                                 // allocate for PRINTER_INFO_2

  PRINTER_INFO_2* pPrnInfo2 = 0; // Structure specifies detailed
                                 // printer information

  DEVMODE         DevMode = {0}; // Structure contains information
                                 // about the device initialization
                                 // and environment of a printer

  PRINTER_DEFAULTS PrnDef = { 0, &DevMode, PRINTER_ACCESS_USE };

  // Open printer with name szPrnName
  if( !OpenPrinter( szPrnName, &hHandle, &PrnDef ) )
    return 0; // Error

  // How many memory should be allocated for printer data?
  GetPrinter( hHandle, 2, 0, 0, &dwSize );
  if( !dwSize )
    return 0; // Error

  // Allocate memory
  pPrnInfo2 = (PRINTER_INFO_2*)malloc( dwSize );

  // Receive printer details
  if(!GetPrinter( hHandle, 2, (LPBYTE)pPrnInfo2, dwSize, &dwSize ))
    return 0; // Error

  dwStatus = pPrnInfo2->Status;

  // Free allocated memory
  free( pPrnInfo2 );

  // Close printer
  ClosePrinter( hHandle );

  return dwStatus;
}

Copyright © 2000-2006 by VeryPDF, Inc.
Send comments about this site to the webmaster.