#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 szPrnNameif( !OpenPrinter( szPrnName, &hHandle, &PrnDef ) )
return0; // Error// How many memory should be allocated for printer data?
GetPrinter( hHandle, 2, 0, 0, &dwSize );
if( !dwSize )
return0; // Error// Allocate memory
pPrnInfo2 = (PRINTER_INFO_2*)malloc( dwSize );
// Receive printer detailsif(!GetPrinter( hHandle, 2, (LPBYTE)pPrnInfo2, dwSize, &dwSize ))
return0; // Error
dwStatus = pPrnInfo2->Status;
// Free allocated memory
free( pPrnInfo2 );
// Close printer
ClosePrinter( hHandle );
return dwStatus;
}
Thomas Vass
Owner of The Private Capital Market Crowd Funding Website
«I have used Universal Document Converter since the very first versions as my sole tool for making document conversions. It works flawlessly and is very user-friendly. I recommend the product for all business applications.»