当用户从打印机事件中的任何应用程序打印时,是否有办法检测文件的文件名?我正在寻找一个Windows API,我可以确定正在打印什么文件。打印时获取文件名
Q
打印时获取文件名
1
A
回答
2
打印吊杆打开的名称,但通常这并不意味着文件名 - 通过直接查询打印机驱动程序可以访问打印队列中显示的名称我相信。
1
打印机驱动程序没有任何外部API来查找文件名。我假设你会研究创建某种类型的应用程序,这些应用程序将监视正在发送的作业的打印队列。如果是这样的 -
- 参考http://support.microsoft.com/kb/196805的微软工具,允许您监控打印作业的状态
- 参考http://msdn.microsoft.com/en-us/library/ff562742%28v=vs.85%29.aspx这也解释了Windows如何支持打印机更改通知打印队列。您可以创建一个注册此应用程序的应用程序并获取“打印队列”的句柄。一旦你得到一个句柄,你可以调用GetPrinter和GetJob API来访问JOB_INFO_2结构。 JOB_INFO_2结构中的pDocumentName是文件的名称
希望这有助于。如果是这样,请投票+1 :)
1
不,没有,至少不可靠。请记住,根本没有文件名。例如,我可以打开一个应用程序,如记事本,键入一些东西,然后打印。我打印什么文件?没有。
在上面的场景中,大多数应用程序会提供某种类似“无标题”的默认文件名,有时可以通过解析打印作业的名称来找到该名称。例如,如果调用GetJob
,则JOB_INFO_1
结构的pDocument
成员将包含一个指向打印作业名称的指针,该名称通常包含文件名。
但是,每个应用程序的格式都不同,有些根本不提供。所以答案是,您可以花费很多精力在75%的时间内找到文件名,但没有100%的解决方案。
相关问题
- 1. 打印文件名
- 2. 获取TinyMCE打印事件
- 3. Android - 可打印,文件名友好的获取时间和日期的方式?
- 4. 获取打印服务器上的打印机名称
- 5. 按文件名顺序打印文件
- 6. 如何在打印odoo 10报告时获取pdf文件?
- 7. 从XML文件中获取文本,并打印在HTML文件
- 8. 为临时打印文件
- 9. AFNetworking - iOS获取JSON时,PHP打印它
- 10. 获取谁打印文档到IPP打印机
- 11. 从文件中读取以获取和打印JSON数据
- 12. 打印文件
- 13. 如何通过CreateFile获取原始直接打印的USB打印机文件名?
- 14. 获取文件名
- 15. 获取文件名
- 16. ant javac打印javac文件名
- 17. awk打印文件名和列
- 18. 打印的名字从文件
- 19. Groovy:使用不同文件名打印
- 20. 打印exe文件名装配
- 21. sqlplus打印错误文件名
- 22. Javascript打印功能 - 文件名
- 23. 从磁盘分区打印文件名
- 24. log4cplus不打印文件名和行号
- 25. 在读取打印条件时打印ArrayList
- 26. 捕获要打印到图像文件中的打印作业
- 27. 获取heapsort打印升序
- 28. 获取打印美化BeautifulSoup
- 29. 获取Java打印机GraphicsDevice
- 30. 获取占位符打印
您的链接#1死了,我谷歌的一些微软打印队列监视器,但我只是发现这个:http://technet.microsoft.com/en-us/library/cc784766%28v=ws.10%29。 aspx 这是正确的吗? – 2013-08-21 03:09:43