Как получить источники бумаги для принтера с помощью WMI? - PullRequest
0 голосов
/ 21 декабря 2018

PrinterSettings имеет свойство PaperSources, представляющее собой набор источников бумаги (лотков), доступных для принтера.

Однако мне нужно получить источники бумаги, используя WMI, но все, что я вижутакие свойства, как «PaperSizesSupported» и «PaperTypesAvailable».

Где находятся свойства источников бумаги в WMI?

1 Ответ

0 голосов
/ 27 декабря 2018

К сожалению, нет класса WMI, включенного в ОС, которая предоставляет информацию, которую вы ищете.В .NET класс PrinterSettings эта информация собирается посредством вызовов pinvoke для функции DeviceCapabilities() в winspool.drv.Они не предоставили эти возможности ни в одном из ROOT\cimv2 классов WMI, включая следующие:

  • CIM_Printer (это то, из чего происходит Win32_Printer)
  • Win32_PerfFormattedData_Spooler_PrintQueue
  • Win32_PerfRawData_Spooler_PrintQueue
  • Win32_Printer
  • Win32_PrinterConfiguration
  • Win32_PrinterDriver
  • Win32_PrintJob

Существуют и другие классы принтеров, но это классы принтеров, которые включают в себя любые данные, используемые для запросов.Если вы разрабатываете свое решение для .NET, я бы предложил просто использовать класс PrinterSettings в пространстве имен System.Drawing ( здесь есть ответ с отличным примером ).Если вы используете язык сценариев, вы можете выполнить аналогичную работу, используя сборку .NET в PowerShell, например:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...