C# 以编程方式设置打印机功能

C# 以编程方式设置打印机功能,c#,printing,settings,C#,Printing,Settings,我正在开发一个C#桌面应用程序,需要更改一些打印机设置并打印一些图片。在我的程序中,我已经可以设置纸张大小、打印机名称等。。。如果我进入打印机首选项的高级选项,则有一部分称为“打印机功能”。我不知道如何访问打印机设置中的参数。例如,有“边框”、“大衣饰面”、“2英寸切口”等。。我特别感兴趣的是“2英寸切割” 如何在运行时获取这些属性 更新 我更改了图片并提出了一点更具体的问题。您可以使用DEVMODE结构的dmPrintQuality成员设置打印机质量。其他打印机功能可能不适用于所有打印机。某

我正在开发一个C#桌面应用程序,需要更改一些打印机设置并打印一些图片。在我的程序中,我已经可以设置纸张大小、打印机名称等。。。如果我进入打印机首选项的高级选项,则有一部分称为“打印机功能”。我不知道如何访问打印机设置中的参数。例如,有“边框”、“大衣饰面”、“2英寸切口”等。。我特别感兴趣的是“2英寸切割”

如何在运行时获取这些属性

更新
我更改了图片并提出了一点更具体的问题。

您可以使用DEVMODE结构的dmPrintQuality成员设置打印机质量。其他打印机功能可能不适用于所有打印机。某些打印机驱动程序可能会公开与其他打印驱动程序完全不同的属性。这通常是使用上述结构的dmDriverExtra额外构件完成的。如前所述,dmDriverExtra是专用打印机数据:

包含后面的专用驱动程序数据的字节数 结构。如果设备驱动程序未使用特定于设备的 信息,将此成员设置为零


好的,我找到了一个对我来说非常有效的解决方案,希望这能帮助其他人

经过一番研究,我发现我的打印机没有设置成允许通过驱动程序访问这些功能。因此,我所做的是在windows中的打印机和设备中创建第二个配置文件,该配置文件使用相同的驱动程序连接到同一端口上的同一打印机。然后使用我的程序,我只需根据需要选择不同的打印机配置文件。工作起来很有魅力


感谢所有参与的人。

AFAIK,使用DEVMODE API调用:(这是否意味着如果驱动程序支持,我可以访问此功能?驱动程序按照其选择“通过dmDriverExtra”解释这些“驱动程序特定”属性。因此,您的驱动程序可能具有高级功能“Covercoat Finish”、“2inch cut”,其他驱动程序中不可用,且Api无法访问,因为它们不是所有驱动程序的通用项。我明白了。因此,我需要利用dmDriverExtra来操作这些设置?只有在您知道dmDriverExtra中存储了什么的情况下。如果驱动程序文档记录了其中存储的内容,那么它的大小等。通常,这是不公开的,因为这是驱动程序的私有数据