当用户从打印机事件中的任何应用程序打印时,有没有办法检测文件的文件名?我正在寻找一个Windows api,我可以确定正在打印的文件。
答案 0 :(得分:2)
使用名称打开打印jibs,但通常这并不意味着文件名 - 通过直接查询打印机驱动程序可以访问打印队列中显示的名称。
答案 1 :(得分:1)
打印机驱动程序没有任何用于查找文件名的外部API。我假设你会考虑创建某种类似于systray代理的应用程序,它将监视正在发送的作业的打印队列。如果是的话 -
希望这会有所帮助。如果是,请投票+1:)
答案 2 :(得分:1)
不,没有,至少不可靠。请记住,可能根本没有文件名。例如,我可以打开像记事本这样的应用程序,键入一些东西,然后打印。我打印什么文件?没有。
在上面的场景中,大多数应用程序将提供某种默认文件名,例如"无标题",有时您可以通过解析打印作业的名称来找到该名称。例如,如果您致电GetJob
,则JOB_INFO_1
结构pDocument
成员将包含指向打印作业名称的指针,该名称通常包含文件名。
但是,每个应用程序的格式都不同,有些应用程序根本不提供。所以答案是你可以在75%的时间内找到文件名并付出很多努力,但根本就没有100%的解决方案。