博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监控打印机
阅读量:6476 次
发布时间:2019-06-23

本文共 1193 字,大约阅读时间需要 3 分钟。

uses Winapi.WinSpool;

procedure TForm1.Button1Click(Sender: TObject);

var
pi2: PRINTER_INFO_2;
hPrinter: THandle;
Jobs: array [0 .. 1000] of TJobInfo2;
BytesNeeded, NumJobs: Dword;
begin
pi2.pPrinterName := 'Microsoft XPS Document Writer';
if OpenPrinter(pi2.pPrinterName, hPrinter, 0) then
begin
while true do
begin
WaitForPrinterChange(hPrinter, PRINTER_CHANGE_ADD_JOB);
if EnumJobs(hPrinter, 0, 1000, 2, @Jobs, SizeOf(Jobs), BytesNeeded,
NumJobs) then
begin
if NumJobs <> 0 then
begin
with Jobs[NumJobs - 1] do
showmessage(StrPas(pUserName) + StrPas(pMachineName) +
StrPas(pDocument));
end;
end;
end;
end;
end;

可监控的打印机状态参数记录:

_JOB_INFO_2W = record

JobId: DWORD;
pPrinterName: LPWSTR;
pMachineName: LPWSTR;
pUserName: LPWSTR;
pDocument: LPWSTR;
pNotifyName: LPWSTR;
pDatatype: LPWSTR;
pPrintProcessor: LPWSTR;
pParameters: LPWSTR;
pDriverName: LPWSTR;
pDevMode: PDeviceModeW;
pStatus: LPWSTR;
pSecurityDescriptor: PSECURITY_DESCRIPTOR;
Status: DWORD;
Priority: DWORD;
Position: DWORD;
StartTime: DWORD;
UntilTime: DWORD;
TotalPages: DWORD;
Size: DWORD;
Submitted: TSystemTime; { Time the job was spooled }
Time: DWORD; { How many seconds the job has been printing }
PagesPrinted: DWORD;
end;

转载地址:http://sglko.baihongyu.com/

你可能感兴趣的文章
[ BZOJ 2134 ] 单选错位
查看>>
一文弄懂神经网络中的反向传播法(Backpropagation algorithm)
查看>>
简单字符串处理
查看>>
WebKit 内核浏览器 initKeyboardEvent 函数原型
查看>>
使用CSS样式表方法绝对居中定位DIV浮动层
查看>>
扫描----整理
查看>>
IOS 手机震动
查看>>
智能指针的实现
查看>>
《The Missing Manual Javascript 》 - 书摘精要
查看>>
C#和Modbus通信工程
查看>>
winedit 改字体大小
查看>>
如何成为“10倍效率的开发者”
查看>>
在JAVA中如何判断按下两个键
查看>>
无法安装程序包“MIcrosoft.Owin.Security 2.0.2”。您正在尝试将此程序包安装到某个将“.NETFramework,Version=v4.0”作为目标的项目中。...
查看>>
spark使用scala读取Avro数据(转)
查看>>
中文词频统计
查看>>
「苦练基本功」超级大佬推荐工程师必看的书感悟
查看>>
折腾笔记之wordpress安装出现错误---【wordpress点击文章找不到网页的解决办法】...
查看>>
387. 最小差
查看>>
LCS问题
查看>>