获取打印机队列的状态信息_Delphi

  • 内容
  • 评论
  • 相关

    在有些情况下,需要获取打印机队列的状态信息,可以通过Windows API 函数EnumJobs来获取打印机队列的状态信息。下面例程获取打印机队列的状态信息进行了说明。

1) 通过菜单File | New Application 创建一个新的工程。
2) 在窗体Form1中添加一个Button组件和一个Memo组件,进行相关属性的设置。
3) 添加Button1组件的OnClick事件的处理过程如下:

procedure TForm1.Button1Click(Sender: TO b j e c t ) ;
var
LPHandle: THandle; // 打印机句柄
LPStrBuf: Array [0..256] of Char; // 打印机名称

http://www.gaodaima.com/?p=65732获取打印机队列的状态信息_Delphi

NoJobs:Word; // 希望获取的作业数
s:LongWord; // Job_Info 的字节数
Job_Info: array[0..10] of JOB_INFO_1; // 打印队列信息
cbNeeded:Cardinal;
cReturned:Cardinal; // 返回的作业数
ret:LongBool;
I:Integer;
begin
LPStrBuf:='HP LaserJet III'; // 指定打印机名称
// 打开打印机
if (OpenPrinter(LPStrBuf,LPHandle,nil)=False) then
begin
MessageBox(Form1.Handle,'打开打印机失败。','信息' , MB_OK);
Exit; // 退出
end ;
s:= Sizeof(Job_Info);
cbNeeded:=0;
cReturned:=0;
NoJobs:=10 ;
ret:= EnumJobs(LPHandle,0 ,NoJobs,1,@Job_Info,s,cbNeeded,cReturned);
// 显示打印队列信息
Memo1.Lines.Add('共有打印任务:' +IntToStr(cReturned)+'个');
for I:=0 to cReturned-1 do
Memo1.Lines.Add( '第' + IntToStr(I+1)+' 个打印任务有'+IntToStr(Job_Info[I].TotalPages)+'页。');
end;
4) 编译、链接和运行程序,测试效果。
说明:
· 在进行测试的时候,应根据系统中安装的打印机设置LPStrBuf的数值。
· 可以通过Wi n d o w s 系统中的“控制面板”打开打印机管理器验证运行结果。

欢迎大家阅读《获取打印机队列的状态信息_Delphi》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

原创文章,转载请注明: 转载自搞代码

本文链接地址: 获取打印机队列的状态信息_Delphi

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注