GetPrinterStatus

#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;
}
  • Alfred Dietrich

    DI Alfred Dietrich

    Austria

    «I use all of the MS Office programs with the Universal Document Converter being an indispensable addition for creating PDF files and converting files to JPG and TIF file formats. The Universal Document Converter is intuitive in its structure, easy to handle and, most importantly, extremely reliable. Currently, I am using the 6.0 version on Windows 7 and I am very happy with it.»