加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何控制Windows中打印机的打印机托盘选择

发布时间:2020-12-13 21:27:34 所属栏目:Windows 来源:网络整理
导读:我们需要能够更改给定打印机的默认选定打印托盘.有没有人有VC / win32代码这样做? 如果重要,我相信我们必须更改打印机的默认设置.我们的打印作业由我们以外的应用程序执行,因此我们无法在源自应用程序内部的打印操作的上下文中进行这些更改.除非有某种方法
我们需要能够更改给定打印机的默认选定打印托盘.有没有人有VC / win32代码这样做?

如果重要,我相信我们必须更改打印机的默认设置.我们的打印作业由我们以外的应用程序执行,因此我们无法在源自应用程序内部的打印操作的上下文中进行这些更改.除非有某种方法可以修改不同应用程序中的默认打印设置,否则我认为我们无法更改用户的打印机默认设置,启动打印作业,然后将默认设置恢复为原始值.

我们真的更喜欢只为当前用户更改默认值,而不需要任何特殊的UAC提升等…

我怀疑它将使用类似于this MSDN article中显示的内容,并涉及在DEVMODE结构中设置字段(dmDefaultSource或dmFormName或两者).

任何接受者?或者有没有人有任何他们想分享的陷阱?

编辑:这是DEVMODE文档DEVMODE documentation的链接

编辑:我还应该指出,我们正在寻找一个通用的解决方案 – 不是特定于特定打印机的东西(我们在很多很多环境中部署)

仅供参考 – 我们使用的解决方案是捕获DEVMODE结构.我们有一个小的win32应用程序,它显示打印机设置对话框(通过 DocumentProperties,fMode设置为DM_IN_PROMPT).然后将生成的DEVMODE保存到磁盘.当我们进行打印时,我们捕获当前的DEVMODE,设置存储的DEVMODE,启动打印,然后恢复原始的DEVMODE.

这实际上很有效.有时,打印驱动程序会更新并导致存储的DEVMODE中断,但这种情况不会经常发生,并且用户可以轻松修复.

作为额外的奖励,这种方法允许我们捕获所有打印机设置(而不仅仅是输出托盘) – 因此我们能够支持高级设置,如装订,整理等…

提示:如果尝试此操作,请确保将磁盘写入二进制输出流.在我对这种方法的初步评估中,我不小心将输出流设置为文本输出流.在许多情况下,情况会正常,然后突然中断一些打印机(在DEVMODE私有数据中使用高位字节).这是一个愚蠢而又容易犯的错误 – 而且还有一段很好的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读