资源描述:
《获取打印机状态信息》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、获取打印机状态信息下面的代码可以判断所选打印机是否支持双面打印。如返回值为1,则表示支持双面打印,返回值为0则表示不支持。DeviceCapabilitiesA(Device,Port,DC_DVPLEX,nil,nil);下面的代码可以获得一个打印机最多能复制的份数:DeviceCapabilitiesA(Device,Port,DC_COPIES,nil,nil);使用GetDeviceCaps()函数确定所选设备的特定属性。在某些情况下,GetDeviceCaps()将返回所需要的值。下面的代码以毫米为单位返回打印机设备的宽度:GetDeviceCaps(Print
2、er.Handle,HORISIZE);在另一些情况下,GetDeviceCaps()返回一个整数,这个整数经过位屏蔽可以获得打印机的某一性能。例如,GetDeviceCaps()方法返回这样的整型值:RCaps:=GetDeviceCaps(Printer.Handle,RASTERCAPS);然后,通过AND运算符屏蔽出RC_BANDING字段,进而确定打印机是否支持分段打印技术。(RCapsandRC_BANDING)=RC_BANDING***************获取打印机状态信息varpinfo:pPRINTERINFO2;pprt,a:Cardinal;b:P
3、DWORD;beginb:=allocmem(256);pinfo:=AllocMem(1000);ifOpenPrinter('HPDJ200',pprt,nil)thenbegina:=1000;ifgetprinter(pprt,2,pinfo,a,b)thenshowmessage(pinfo.pPrinterName+'ststus:'+inttostr(pinfo.Status));ClosePrinter(pprt);end;freemem(b);freemem(pinfo);end;PRINTER_INFO_2.Status:WindowsNT:PRINTER
4、_STATUS_PAUSEDPRINTER_STATUS_PENDING_DELETIONWindows95:PRINTER_STATUS_BUSYPRINTER_STATUS_DOOR_OPENPRINTER_STATUS_ERRORPRINTER_STATUS_INITIALIZINGPRINTER_STATUS_IO_ACTIVEPRINTER_STATUS_MANUAL_FEEDPRINTER_STATUS_NO_TONERPRINTER_STATUS_NOT_AVAILABLEPRINTER_STATUS_OFFLINEPRINTER_STATUS_OUT_OF_M
5、EMORYPRINTER_STATUS_OUTPUT_BIN_FULLPRINTER_STATUS_PAGE_PUNTPRINTER_STATUS_PAPER_JAMPRINTER_STATUS_PAPER_OUTPRINTER_STATUS_PAPER_PROBLEMPRINTER_STATUS_PAUSEDPRINTER_STATUS_PENDING_DELETIONPRINTER_STATUS_PRINTINGPRINTER_STATUS_PROCESSINGPRINTER_STATUS_TONER_LOWPRINTER_STATUS_UNAVAILABLEPRINTE
6、R_STATUS_USER_INTERVENTIONPRINTER_STATUS_WAITINGPRINTER_STATUS_WARMING_UP2、读取打印机状态可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。生成关于PRN的文件句柄后,可象普通文件一样向文件写入内容,比如WRITE,写完后关闭文件。//从并行端口读取打印机状态functionGetPrinterStatus:byte;asmMOVDX,$379;INAL,DX;end;//获取打印机是否出错functionCheckPrinter:boolean;
7、vartemp:byte;begintemp:=GetPrinterStatus;Result:=not(((tempand$80)=0)//打印机忙or((tempand$20)<>0)//打印机缺纸or((tempand$10)=0)//打印机未联机or((tempand$08)=0));//打印机出错;end;3、用API直接打印usesCommDlg;{$IFNDEFWIN32}constMAX_PATH=144;{$ENDIF}procedureTForm1.Button1Click(Send