如何使用GetPrinter
4490 点击·0 回帖
![]() | ![]() | |
![]() | 在VC++ 6.0中实现与打印机相关的功能可以通过调用Win32 Spooler库中的函数实现。这些函数的定义在Winspool.h中,这些函数 的参考手册可以见MSDN中 Platform SDK->Graphics and Multimedia Services->Windows GDI->Printing and Print Spooler。 以下举例说明。假设现在有一台网络打印机,URL是"\MyServerNameSharedPrinterName"。如果需要查询这台打印机是否 缺纸,可以通过以下函数实现: BOOL isOutOfPaper(){ HANDLE hPrinter=0; Dword dwNeeded=0; PRINTER_INFO_2* pPrinterInfo= (PRINTER_INFO_2 *)malloc( 0 ); ::OpenPrinter("\\MyServerName\SharedPrinterName",;hPrinter,NULL); if(!::GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,0,;dwNeeded)){ pPrinterInfo= (PRINTER_INFO_2 *)malloc( dwNeeded ); ::GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,dwNeeded,;dwNeeded); } ::ClosePrinter(hPrinter); if(pPrinterInfo->Status==PRINTER_STATUS_PAPER_OUT){ free(pPrinterInfo); return TRUE; }else{ free(pPrinterInfo); return FALSE; } } 其中OpenPrinter()用于获得一个打印机句柄,GetPrinter()用于获得打印机相关信息。关于Win32 Spooler的更详细的功 能和使用方法请参考前面提到的MSDN中的有关章节 | |
![]() | ![]() |