



免费预览已结束,剩余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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届山西省忻州一中、临汾一中、精英中学、鄂尔多斯一中化学高二第一学期期末统考模拟试题含答案
- 2026届广东省汕头市名校高一化学第一学期期中联考试题含解析
- 幼儿园中秋节创意主题活动策划方案
- 广东省广州市2026届高一化学第一学期期末调研试题含解析
- 园区活动策划方案
- 商业强电面试题及答案
- 铁路技师实操考试试题及答案
- 消防楼梯考试题及答案
- 单色理论考试题及答案
- 家电公司学历教育管理规定
- GMP认证药厂固体车间及中药材提取车间平面图
- 护理行政面试题及答案
- 高校新教师安全教育培训
- 车辆回场安全管理制度
- 人形机器人标准化白皮书(2024版)
- 2025年行政执法人员执法证考试必考多选题库及答案(共250题)
- 2025年初中语文名著阅读《林海雪原》知识点总结及练习
- 固定翼无人机机身设计
- 血液透析导管的维护课件
- 2019保障性住房设计标准共有产权保障住房和征收安置房分册
- 外墙保温施工方案范本
评论
0/150
提交评论