请问,如何控制当前的打印作业,以便根据情况减少或禁止打印

Muf 2006-01-11 05:01:41
各种软件都支持打印功能,而且打印的内容可以是很多页。
现在,需要有一个程序,希望能够控制当前的打印作业队列,并且能够暂停打印、恢复打印、减少打印的页数(如原先打印10页,现在只允许打印5页)。

请问,如何做到? 或指点一个明确的方向。
...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
EagleTwenty 2006-01-19
  • 打赏
  • 举报
回复
mark,我研究得不深
但有个思路:
1、用目标打印机的驱动,在客户端安装一个虚拟打印机
2、HOOK系统文件spoolss.dll里的writeprint函数,截获写进去的打印数据,借此可以分析出要打印多少页,
3、把截获的数据发送到服务器,由服务器处理完了再打印。
Muf 2006-01-12
  • 打赏
  • 举报
回复
感谢回答。

对于打印机作业的控制有几个问题:
1. 使用SetJob暂停作业,则在暂停期间,用户可通过直接控制打印机继续。尽管我一直循环暂停,但只要用户有耐心,仍可以完成打印。
2. 使用SetJob删除作业,则由于获取作业信息不是实时的,有可能造成已经有1~2页打印完成了。
3. 唯有先使整台打印机暂停,才能够及时处理作业信息。但是整台打印机仍然能够通过windows的打印面板来继续。

看来Windows的“打印机和传真”面板控制是关键,不应该由用户来控制(最多只能查看)。但是如何做到这一点呢?好有挺麻烦的。
Kudeet 2006-01-11
  • 打赏
  • 举报
回复
看看API函数SetPrinter/SetJob/GetJob
Kudeet 2006-01-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=209715
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=196610

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧