• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

Delphi 搞代码 3年前 (2018-08-09) 137次浏览 已收录 0个评论

    在有些情况下,需要获取打印机队列的状态信息,可以通过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 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址