Delphi控制打印机

delphi 连接网口打印机 发送指令打印二维码 procedure getQRBitmap(printstr:string); var moduleSize: Integer; slength: Integer; Send: string; Send_Length:String; PicNamearray: array[0..50] of Byte; begin moduleSize := 8; slength:=Length(printstr); //存入二维码数据 Send_L. 阅读详情

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);

ifOpenPrinter('HP DJ 200',pprt,nil) then

begin

a:=1000;

ifgetprinter(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:\Download\Test.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 -

GetDeviceCaps(Printer.Handle, VertRes)) div 2;

end else begin

Margin.x := 0;

Margin.y := 0;

end;

end;

{$ENDIF}

Memo1.Lines.Add(IntToStr(Margin.x));

Memo1.Lines.Add(IntToStr(Margin.y));

end;

end;

 

 

Delphi下使用并口控制打印机的方法 Delphi下使用并口控制打印机的方法 使用Delphi编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。 Var F:TextFile; Str:string; Begin try Str:=’ 欢迎使用票据打印机!’+Chr(10); A 阅读详情

相关推荐

delphi 获取打印机默认纸张_Delphi中如何控制打印方向,纸张大小等 | 学步园

如何在程序里控制打印纸张大小(A3,A4)和打印方向?不想打开设置窗口---------------------------------------------------------------Uses Printer;.........procedure TForm1.Button1Click(Sender: TObject);varADevice, ADriv...

weixin_39638708的博客 744

delphi android 打印机,delphi中如何检测打印机状态?(在线等) ( 积分: 100 )

打印相关的API函数9、API函数(打印相关)列表API函数名 函数说明 适用范围W3.x W95 NTAddPrinterConnection 为当前用户建立与打印机的联系 否 是 是StartPagePrinter 开始打印机 ...

weixin_31995343的博客 634

获取打印机状态Delphi

用程序获取打印机状态 网络上的一些代码都不能成功 借鉴一下,查看API函数,一般是函数的参数使用不当造成 终于成功! 含源代码: Delphi6

delphi 获取打印机状态,如缺纸等问题

uses Printers,WinSpool;     type TPrinterInfo = record SeverName: PChar; PrinterName: PChar; ShareName: PChar; PortName: PChar; DriverName: PChar; Comment: PChar; Lo...

全粘工程师 4151

监控打印机状态 delphi

获取正在打印的列表信息,以及打印的状态,对卡纸等问题做出响应

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 401

delphi android 打印机,用delphi控制小票打印机打印图片

用delphi控制小票打印机打印图片unit PosPrintBmp;{***********************************************************************}{ 单元名称:PosPrintBmp 小票打印机打印图片的类 }{ }{ 创建人:李红雷 }{ 日期:2012.2 }{ 修改人: }{ 日期: }{ 功能:GetDoc...

weixin_39649736的博客 936

PEMFC电化学入门:从电流密度到Tafel公式的实战计算指南

本文详细介绍了PEMFC电化学的基础知识,从电流密度计算到Tafel公式的应用,提供了实战计算指南。通过代码示例和常见问题排查,帮助工程师快速掌握燃料电池性能优化的关键参数,如交换电流密度和活化损失计算,适用于汽车动力和分布式发电等领域。

weixin_29229055的博客 551

delphi控制POS打印机

delphi控制POS打印机 delphi控制POS打印机 RPrinter为TextFile类型; SContent为TStringList类型。 // 建立打印连接并打印数据 ...

weixin_30432579的博客 284

【雷达成像实战】RD、CS、RMA算法对比与Matlab实现:从信号处理到高清成像

本文深入对比了雷达成像中三种核心算法:经典的距离多普勒算法(RD)、基于稀疏重建的压缩感知算法(CS)以及高精度的快速多通道获取算法(RMA)。通过详细的Matlab实战代码,从原理拆解到实现步骤,分析了各自在计算效率、成像精度、数据需求和适用场景上的优劣,为工程选型与算法实践提供了清晰指南。

weixin_29095587的博客 450

基于YOLO11的垃圾分类AI模型训练实战

通过这次实战,我们成功训练出了一个高性能的垃圾分类AI模型。项目展示了从数据准备、模型训练到结果分析的完整流程,为AI在环保领域的应用提供了有价值的参考。项目文件结构│ ├── best.pt # 最佳模型权重│ └── last.pt # 最新模型权重├── results.csv # 详细训练数据├── results.png # 训练曲线图├── confusion_matrix.png # 混淆矩阵└── args.yaml # 训练参数配置。

lydz1的博客 1657

delphi 控制打印机字体TLogFont

procedure SetPrintFont(Degrees:Integer);var LogFont : TLogFont ;begin                             with Printer.Canvas do   begin      With LogFont do      begin        lfHeight:=Font.Height;  // set t

yuwm_1979的专栏 2473

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 153

蓝牙打印机控制资源库介绍:一款Delphi环境下蓝牙打印解决方案

蓝牙打印机控制资源库介绍:一款Delphi环境下蓝牙打印解决方案 去发现同类优质开源项目:https://gitcode.com/ 随着信息化技术的不断发展,各类商业场景对打印需求的精准度和灵活性提出了更高要求。在这样的背景下,一款名为“蓝牙打印机控制资源库”的开源项目应运而生,它为Delphi开发者提供了一种简单而强大的打印解决方案。 项目介绍 蓝牙打印机控制资源库是一个专门针对Delphi编程...

gitblog_06796的博客 798

一步步教你使用 NVIDIA 推出的全新GPU加速求解器 cuOpt:解锁超高效率的求解体验

未完成

Linshaodan520的博客 869

【Windows Server 2019】存储服务器的配置和管理——iSCSI的安装和配置(下)

博文介绍了如何使用Windows 10 和 ESXi 验证iSCSI服务器部署成功以及如何管理iSCSI服务 。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 8000

Delphi下POS机控制钱箱,客显,打印机

1、控制POS机的客户显示屏 procedure TFrmMain.ShowMoney(Money_Port: String;Money_String:String);//Moneey_Port:顾显接口Com1 or Com2 Money_String:顾显显示的内容var PrnFileName:TextFile;begin Assignfile(PrnFi...

aa663388的博客 334

AI驱动的材料科学:从分子设计到性能预测

AI驱动的材料科学:从分子设计到性能预测 关键词: 材料科学 人工智能 分子设计 性能预测 机器学习 深度学习 摘要:

AI天才研究院 2187

使用Delphi控制条码打印机打印条码(系列问题1)

使用Delphi控制条码打印机打印条码(系列问题1) Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiNetwork/html/delphi_20061204150648203.html 使用Delphi程序控制专用条码打印机打印带有条码的卡片(卡片可以贴在商品上)。本人第一次涉及此类问题,是新手,看了相关的问题列表,没有很清楚的...

weixin_33836874的博客 177

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Delphi 控制打印机进纸退纸实现小票连续打印

Delphi 控制打印机进纸退纸实现小票连续打印 去发现同类优质开源项目:https://gitcode.com/ 介绍 本仓库提供了一份 Delphi 语言编写的资源文件,用于实现打印机控制功能。该资源文件能够自定义纸张大小,并在打印小票前后进行退纸操作,从而实现小票的连续打印。同时,本资源还包含了编程时使用的控件,方便开发者快速实现相关功能。 功能特点 自定义纸张大小,适应不同打印需求 打印...

gitblog_06789的博客 342

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Delphi控制打印机进纸退纸实现小票连续打印:让打印更高效

Delphi控制打印机进纸退纸实现小票连续打印:让打印更高效 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代商业场景中,小票连续打印是提升服务效率、优化客户体验的重要环节。Delphi 控制打印机进纸退纸实现小票连续打印项目,正是为了满足这一需求而诞生。它提供了一套基于 Delphi 语言编写的资源文件和控件,让开发者能够轻松实现打印机控制,从而实现高效的小票连...

gitblog_06750的博客 452

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pos打印机指令java,如何从Delphi向POS打印机发送控制命令

我已经尝试了很多,最后我写了这个有效的代码:procedure Cut();var epsonprn : System.Text;begintryAssignFile(epsonprn,'COM3');// the name of printer port, can be a network shareRewrite(epsonprn);Write(epsonprn,#29#86#66#0);//...

weixin_29533443的博客 211

Delphi下POS机控制钱箱,客显,打印机,小票打印

1、控制POS机的客户显示屏procedure TFrmMain.ShowMoney(Money_Port:   String;Money_String:String);//Moneey_Port     顾显接口Com1   or   Com2     Money_String     顾显显示的内容var    PrnFileName:TextFile;begin    Assignfil

zhusongdong的专栏 4935

Delphi下POS打印机,控制开钱箱,客显,顾客显示屏,小票打印机

1、控制POS机的客户显示屏 procedure TFrmMain.ShowMoney(Money_Port:   String;Money_String:String); //Moneey_Port     顾显接口Com1   or   Com2     Money_String     顾显显示的内容 var     PrnFileName:TextFile; begin

shandiantianying的专栏 2199
上一篇: Delph各种问题汇总(不断更新中)
下一篇: Delphi遍历控件
delphi308
博客等级 码龄18年 148粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值