Printing &引用;是否确实要打印X页?“;实际打印前的对话框。。。(适用于任何应用程序)

Printing &引用;是否确实要打印X页?“;实际打印前的对话框。。。(适用于任何应用程序),printing,hook,driver,Printing,Hook,Driver,在允许人们打印的网吧里,有时他们打印的页面比预期的多 我正在寻找一种方法,在按下打印按钮(在任何应用程序中)后,但在作业发送到队列之前显示“是否确实要打印X页?”对话框。 我正在寻找如何实现这样一个钩子的指针 (我曾考虑过修改FOSS PDF打印机,先打印成PDF,然后显示对话框,如果用户按“是”,则在真正的打印机上打印。但这似乎是一种非常迂回的方法,这样做也会丢失打印机特有的功能。)您可以做的一件事也是一种循环,即暂停后台打印程序,打印作业,获取页数,然后提示用户确认。如果用户同意作业,则释放

在允许人们打印的网吧里,有时他们打印的页面比预期的多

我正在寻找一种方法,在按下打印按钮(在任何应用程序中)后,但在作业发送到队列之前显示“是否确实要打印X页?”对话框。

我正在寻找如何实现这样一个钩子的指针


(我曾考虑过修改FOSS PDF打印机,先打印成PDF,然后显示对话框,如果用户按“是”,则在真正的打印机上打印。但这似乎是一种非常迂回的方法,这样做也会丢失打印机特有的功能。)

您可以做的一件事也是一种循环,即暂停后台打印程序,打印作业,获取页数,然后提示用户确认。如果用户同意作业,则释放假脱机程序。我手头没有API调用,但我可以很容易地操纵后台处理程序队列

当然,这种想法的缺点是,如果队列是基于服务器的,那么可能会出现潜在的权限问题

另一种方法是强制输出到WMF或EMF文件,并以这种方式统计页面计数,然后将其交给后台处理程序。这类似于将其输出到PDF的概念,但使用本机方法。(这基本上就是应用程序在进行预览时通常要做的(did)——以图元文件格式呈现作业,然后将其显示在屏幕上或后台打印到打印机上)

不幸的是,在呈现打印作业之前无法获得页面计数,除非您非常清楚内容并能够判断它,因此您必须至少经历打印的过程


希望这有帮助。

我喜欢暂停后台处理程序解决方案,谢谢!看起来很简单。大多数打印机都是基于TCP/IP的,因此每个工作站都有自己的队列。WMF/EMF解决方案似乎更干净,但我不知道如何从那里开始,我自己也从未着手实施过。但我发现一个网吧管理软件可以做到这一点: