代码之家  ›  专栏  ›  技术社区  ›  Ivan-Mark Debono

如何使用WMI获取打印机的纸张源?

  •  0
  • Ivan-Mark Debono  · 技术社区  · 6 年前

    PrinterSettings PaperSources 属性,该属性是打印机可用的纸张源(纸盘)的集合。

    WMI 但我看到的只是“PaperSizesSupported”和“PaperTypesAvailable”等属性。

    WMI中的纸张源属性在哪里?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Paul G    6 年前

    不幸的是,操作系统中没有提供所需信息的WMI类。在.NET中 PrinterSettings 类此信息是通过对 DeviceCapabilities() 作用于 winspool.drv . 他们没有在任何一个项目中提供这些能力 ROOT\cimv2

    • CIM_打印机(这是Win32_打印机的来源)
    • Win32\u PerfRawData\u后台处理程序\u打印队列
    • Win32\U打印机
    • Win32_打印机配置
    • Win32_打印作业
    • MSFT_打印机(与其他几个类一起位于根/StandardCimv2命名空间中)

    还有一些其他打印机类,但这些是包含用于查询的任何数据的打印机类。如果您是在.NET中开发解决方案,我建议只在System.Drawing命名空间中使用PrinterSettings类( there is an answer here with a great example )。如果您使用的是脚本语言,则可以通过在PowerShell中使用.NET程序集来完成类似的工作,如下所示:

    Add-Type -AssemblyName System.Drawing
    $PrinterSettings = New-Object System.Drawing.Printing.PrinterSettings
    
    ForEach ($Printer in Get-Printer) {
    
        $PrinterSettings.PrinterName = $Printer.Name
        Write-Host $Printer.Name
        Write-Host $PrinterSettings.PaperSources
    
    }