获取打印机状态信息.doc_第1页
获取打印机状态信息.doc_第2页
获取打印机状态信息.doc_第3页
获取打印机状态信息.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 获取打印机状态信息下面的代码可以判断所选打印机是否支持双面打印。如返回值为1,则表示支持双面打印,返回值为0则表示不支持。DeviceCapabilitiesA(Device,Port,DC_DVPLEX,nil,nil);下面的代码可以获得一个打印机最多能复制的份数:DeviceCapabilitiesA(Device,Port,DC_COPIES,nil,nil);使用GetDeviceCaps()函数确定所选设备的特定属性。在某些情况下,GetDeviceCaps()将返回所需要的值。下面的代码以毫米为单位返回打印机设备的宽度:GetDeviceCaps(Printer.Handle,HORISIZE);在另一些情况下,GetDeviceCaps()返回一个整数,这个整数经过位屏蔽可以获得打印机的某一性能。例如,GetDeviceCaps()方法返回这样的整型值:RCaps:=GetDeviceCaps(Printer.Handle,RASTERCAPS);然后,通过AND运算符屏蔽出RC_BANDING字段,进而确定打印机是否支持分段打印技术。(RCapsandRC_BANDING)=RC_BANDING*获取打印机状态信息var pinfo: pPRINTERINFO2; pprt,a: Cardinal; b:PDWORD; begin b:=allocmem(256); pinfo:=AllocMem(1000); if OpenPrinter(HP DJ 200,pprt,nil) then begin a:=1000; if getprinter(pprt,2,pinfo,a,b) then showmessage(pinfo.pPrinterName+ ststus:+inttostr(pinfo.Status); ClosePrinter(pprt); end; freemem(b); freemem(pinfo); end; PRINTER_INFO_2.Status : Windows NT: PRINTER_STATUS_PAUSED PRINTER_STATUS_PENDING_DELETION Windows 95: PRINTER_STATUS_BUSY PRINTER_STATUS_DOOR_OPEN PRINTER_STATUS_ERROR PRINTER_STATUS_INITIALIZING PRINTER_STATUS_IO_ACTIVE PRINTER_STATUS_MANUAL_FEED PRINTER_STATUS_NO_TONER PRINTER_STATUS_NOT_AVAILABLE PRINTER_STATUS_OFFLINE PRINTER_STATUS_OUT_OF_MEMORY PRINTER_STATUS_OUTPUT_BIN_FULL PRINTER_STATUS_PAGE_PUNT PRINTER_STATUS_PAPER_JAM PRINTER_STATUS_PAPER_OUT PRINTER_STATUS_PAPER_PROBLEM PRINTER_STATUS_PAUSED PRINTER_STATUS_PENDING_DELETION PRINTER_STATUS_PRINTING PRINTER_STATUS_PROCESSING PRINTER_STATUS_TONER_LOW PRINTER_STATUS_UNAVAILABLE PRINTER_STATUS_USER_INTERVENTION PRINTER_STATUS_WAITING PRINTER_STATUS_WARMING_UP 2、读取打印机状态可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。生成关于PRN的文件句柄后,可象普通文件一样向文件写入内容,比如WRITE,写完后关闭文件。/从并行端口读取打印机状态function GetPrinterStatus:byte;asm MOV DX,$379; IN AL,DX;end;/获取打印机是否出错function CheckPrinter:boolean;var temp:byte;begin temp:=GetPrinterStatus; Result:=not ( (temp and $80)=0) /打印机忙 or (temp and $20)0) /打印机缺纸 or (temp and $10)=0) /打印机未联机 or (temp and $08)=0) ); /打印机出错;end;3、用API直接打印 uses CommDlg; $IFNDEF WIN32 const MAX_PATH = 144; $ENDIF procedure TForm1.Button1Click(Sender: TObject); var Pd : TPrintDlg; DocInfo: TDocInfo; begin FillChar(Pd, sizeof(Pd), #0); Pd.lStructSize := sizeof(Pd); Pd.hWndOwner := Form1.Handle; Pd.Flags := PD_RETURNDC; if PrintDlg(pd) then begin FillChar(DocInfo, sizeof(DocInfo), #0); DocInfo.cbSize := SizeOf(DocInfo); GetMem(DocInfo.lpszDocName, 32); GetMem(DocInfo.lpszOutput, MAX_PATH); lStrCpy(DocInfo.lpszDocName, My Document); Add this line to print to a file lStrCpy(DocInfo.lpszOutput, C:DownloadTest.doc); StartDoc(Pd.hDc, DocInfo); StartPage(Pd.hDc); TextOut(Pd.hDc, 100, 100, Page 1, 6); EndPage(Pd.hDc); StartPage(Pd.hDc); TextOut(Pd.hDc, 100, 100, Page 2, 6); EndPage(Pd.hDc); EndDoc(Pd.hDc); FreeMem(DocInfo.lpszDocName, 32); FreeMem(DocInfo.lpszOutput, MAX_PATH); end; end; 4、获取打印页边距 uses Printers; procedure TForm1.Button1Click(Sender: TObject); var EscapeCode : integer; Margin : TPoint; begin if PrintDialog1.Execute then begin $IFDEF WIN32 Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX); Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY); $ELSE EscapeCode := GETPRINTINGOFFSET; if Escape(Printer.Handle, QUERYESCSUPPORT, sizeof(EscapeCode), EscapeCode, nil) 0 then if Escape(Printer.Handle, GETPRINTINGOFFSET, 0, nil, Margin) 1 then begin EscapeCode := GETPHYSPAGESIZE; if Escape(Printer.Handle, QUERYESCSUPPORT, sizeof(EscapeCode), EscapeCode, nil) 0 then if Escape(Printer.Handle, GETPHYSPAGESIZE, 0, nil, Margin) 0 then begin Margin.x := (Margin.x - GetDeviceCaps(Printer.Handle, HorzRes) div 2; Margin.y := (Margin.y - Ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论