#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;
}
Lori Hamilton
Cameron LNG, USA
«Universal Document Converter is beautiful and runs so smoothly! I will get a lot of use out of it. I'm the only designer at this site, and every department needs some kind of file converted all the time!»