修改驱动程序提供的属性表页

重要

建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) ,自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅 打印支持应用设计指南

UI 插件可以通过实现 IPrintOemUIUI::CommonUIProp 方法和回调函数来修改 Unidrv 提供的或 Pscript5 提供的属性表页面。

UI 插件使用 IPrintOemUI::CommonUIProp 方法指定 CPSUI 可以在打印机属性表的 “设备设置” 页或文档属性表的 “布局”、“ 纸张/质量”和“ 高级 ”页中添加、删除或替换的一组选项项。

OEMCUIPCALLBACK 类型的回调函数用于处理用户对自定义选项项的修改。

添加选项项

UI 插件必须通过将新选项项放置在驱动程序提供的 OPTITEM 结构数组中来描述这些选项项。 驱动程序的打印机接口 DLL 调用 UI 插件的 IPrintOemUI::CommonUIProp 方法两次。 首次调用方法时,它应返回所需的 OPTITEM 结构数。 驱动程序为 OPTITEM 数组分配空间,并在 OEMCUIPPARAM 结构中描述该数组。 驱动程序再次调用 IPrintOemUI::CommonUIProp ,提供 OEMCUIPPARAM 结构的地址,因此该方法可以使用选项说明加载 OPTITEM 结构。

删除选项项

若要从 Unidrv 或 Pscript5 提供的属性表页中删除选项,UI 插件的 IPrintOemUI::CommonUIProp 方法可以遍历 OEMCUIPPARAM 结构指向的 OPTITEM 结构的数组。 对于要从属性表中删除的每个选项,可以设置 OPTITEM 结构的OPTIF_HIDE标志。 (请注意,这实际上不会删除 选项;它会对用户隐藏选项,以便用户无法更改其默认值。)

替换选项项

若要替换 Unidrv 或 Pscript 提供的属性表页中的选项,应按照前面的 “删除选项项” 部分下显示的说明删除现有选项项,然后按照前面 “添加选项项 ”部分下的说明创建新的选项项以替换旧选项项。

处理对自定义选项值的修改

若要处理用户对自定义选项项的修改,必须至少提供一个回调函数。 可以指定处理文档属性表和打印机属性表选项的单个回调函数,也可以为每个回调函数指定单独的函数。 这些回调的类型为 OEMCUIPCALLBACK

回调函数通过将其地址置于 OEMCUIPPARAM 结构中来指定。 UI 插件接收此结构的地址作为其 IPrintOemUI::CommonUIProp 方法的输入。

当用户打开打印机属性表或文档属性表并修改选项时, CPSUI 会调用打印机驱动程序的打印机接口 DLL。 此 DLL 处理其自己的 OPTITEM 结构中包含的选项值。 然后,对于每个 UI 插件,打印机接口 DLL 调用以前由 IPrintOemUI::CommonUIProp 指定的 OEMCUIPCALLBACK 类型回调函数。