Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: DeviceCapabilities(DC_BINNAMES) liefert -1

  Alt 18. Mai 2021, 09:42
Hast du es schon mit WMI versucht?

Delphi-Quellcode:
//-----------------------------------------------------------------------------------------------------
// This code was generated by the Wmi Delphi Code Creator (WDCC) Version 1.9.9.482
// http://code.google.com/p/wmi-delphi-code-creator/
// Blog http://theroadtodelphi.wordpress.com/wmi-delphi-code-creator/
// Author Rodrigo Ruz V. (RRUZ) Copyright (C) 2011-2015
//-----------------------------------------------------------------------------------------------------
//
// LIABILITY DISCLAIMER
// THIS GENERATED CODE IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED.
// YOU USE IT AT YOUR OWN RISK. THE AUTHOR NOT WILL BE LIABLE FOR DATA LOSS,
// DAMAGES AND LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS CODE.
//
//----------------------------------------------------------------------------------------------------
program GetWMI_Info;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  ComObj,
  Variants;



// Funktionen und Verwaltung des logischen Druckers.

procedure GetWin32_PrinterInfo;
const
  WbemUser ='';
  WbemPassword ='';
  WbemComputer ='localhost';
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject : OLEVariant;
  oEnum : IEnumvariant;
  iValue : LongWord;
  LAllPaperNames: string;
  LPrinterPaperNames: TArray<string>;
  LPrinterPaperName: string;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_Printer','WQL',wbemFlagForwardOnly);
  oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    Writeln(Format('DeviceID %s',[String(FWbemObject.DeviceID)]));// String
    Writeln('PaperSizesSupported Count: ', Length(TArray<Integer>(FWbemObject.PaperSizesSupported)));// Array of Uint16

    if VarIsArray(FWbemObject.PrinterPaperNames) then
    begin
      LPrinterPaperNames := TArray<string>(FWbemObject.PrinterPaperNames);
      LAllPaperNames := '';
      for LPrinterPaperName in LPrinterPaperNames do
      begin
        LAllPaperNames := LAllPaperNames + LPrinterPaperName + ', ';
      end;
      SetLength(LAllPaperNames, Length(LAllPaperNames) - 2);
      Writeln(LAllPaperNames);
    end;

    Writeln('');
    FWbemObject:=Unassigned;
  end;
end;


begin
 try
    CoInitialize(nil);
    try
      GetWin32_PrinterInfo;
    finally
      CoUninitialize;
    end;
 except
    on E:EOleException do
        Writeln(Format('EOleException %s %x', [E.Message,E.ErrorCode]));
    on E:Exception do
        Writeln(E.Classname, ':', E.Message);
 end;
 Writeln('Press Enter to exit');
 Readln;
end.
Ergibt bei mir:

Code:
DeviceID: OneNote for Windows 10
PaperSizesSupported Count: 2
Letter, A4

DeviceID: OneNote (Desktop)
PaperSizesSupported Count: 10
Letter, Tabloid, Legal, Executive, A3, A4, B4 (JIS), B5 (JIS), Umschlag 10, Umschlag Monarch

DeviceID: Microsoft XPS Document Writer
PaperSizesSupported Count: 107
Letter, Letter klein, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A4 Klein, A5, B4 (JIS), B5 (JIS), Folie, Quarto, 10×14, 11×17, Notiz, Umschlag 9, Umschlag 10, Umschlag 11, Umschlag 12, Umschlag 14, C-Blatt, D-Blatt, E-Blatt, Umschlag DL, Umschlag C5, Umschlag C3, Umschlag C4, Umschlag C6, Umschlag C65, Umschlag B4, Umschlag B5, Umschlag B6, Umschlag, Umschlag Monarch, 6 3/4 Umschlag, US Standardendlospapier, German Std Endlospapier, German Legal Endlospapier, B4 (ISO), Jap. Postkarte, 9×11, 10×11, 15×11, Umschlag Invite, Letter Extra, Legal Extra, A4 Extra, Letter Quer, A4 Quer, Letter Extra quer, Super A, Super B, Letter Plus, A4 Plus, A5 Quer, B5 (JIS) Quer, A3 Extra, A5 Extra, B5 (ISO) Extra, A2, A3 Quer, A3 Extra Quer, Jap. Doppelpostkarte, A6, Jap. Umschlag Kaku 2, Jap. Umschlag Kaku 3, Jap. Umschlag Chou 3, Jap. Umschlag Chou 4, Letter Gedreht, A3 Gedreht, A4 Gedreht, A5 Gedreht, B4 (JIS) Gedreht, B5 (JIS) Gedreht, Jap. Postkarte Gedreht, Jap. Doppelpostkarte Gedreht, A6 Gedreht, Jap. Umschlag Kaku 2 Gedreht, Jap. Umschlag Kaku 3 Gedreht, Jap. Umschlag Chou 3 Gedreht, Jap. Umschlag Chou 4 Gedreht, B6 (JIS), B6 (JIS) Gedreht, 12×11, Jap. Umschlag You 4, Jap. Umschlag You 4 Gedreht, PRC Umschlag 1, PRC Umschlag 3, PRC Umschlag 4, PRC Umschlag 5, PRC Umschlag 6, PRC Umschlag 7, PRC Umschlag 8, PRC Umschlag 9, PRC Umschlag 10, PRC Umschlag 1 Gedreht, PRC Umschlag 3 Gedreht, PRC Umschlag 4 Gedreht, PRC Umschlag 5 Gedreht, PRC Umschlag 6 Gedreht, PRC Umschlag 7 Gedreht, PRC Umschlag 8 Gedreht, PRC Umschlag 9 Gedreht, Benutzerdefinierte Größe

DeviceID: Microsoft Print to PDF
PaperSizesSupported Count: 10
Letter, Tabloid, Legal, Statement, Executive, A3, A4, A5, B4 (JIS), B5 (JIS)

DeviceID: LP 3335 KX Hard- und Software
PaperSizesSupported Count: 22
Letter, Legal, Statement, Executive, A3, A4, A5, A6, Folio, B4, B5 (JIS), B6, B5 (ISO), Briefumschlag #10, Briefumschlag #9, Briefumschlag Monarch, Briefumschlag #6, Briefumschlag C5, Briefumschlag DL, 16K, Oficio II, Custom

DeviceID: Fax
PaperSizesSupported Count: 69
Letter, Letter klein, Legal, Statement, Executive, A4, A4 Klein, A5, B5 (JIS), Folie, Quarto, Notiz, Umschlag 9, Umschlag 10, Umschlag 11, Umschlag 12, Umschlag 14, Umschlag DL, Umschlag C5, Umschlag C6, Umschlag C65, Umschlag B5, Umschlag B6, Umschlag, Umschlag Monarch, 6 3/4 Umschlag, German Std Endlospapier, German Legal Endlospapier, Jap. Postkarte, Reserved48, Reserved49, Letter Quer, A4 Quer, Letter Plus, A4 Plus, A5 Quer, B5 (JIS) Quer, A5 Extra, B5 (ISO) Extra, Jap. Doppelpostkarte, A6, Jap. Umschlag Kaku 3, Jap. Umschlag Chou 3, Jap. Umschlag Chou 4, A5 Gedreht, Jap. Postkarte Gedreht, Jap. Doppelpostkarte Gedreht, A6 Gedreht, Jap. Umschlag Chou 4 Gedreht, B6 (JIS), B6 (JIS) Gedreht, Jap. Umschlag You 4, PRC 16K, PRC 32K, PRC 32K (groß), PRC Umschlag 1, PRC Umschlag 2, PRC Umschlag 3, PRC Umschlag 4, PRC Umschlag 5, PRC Umschlag 6, PRC Umschlag 7, PRC Umschlag 8, PRC 32K Gedreht, PRC 32K (groß) Gedreht, PRC Umschlag 1 Gedreht, PRC Umschlag 2 Gedreht, PRC Umschlag 3 Gedreht, PRC Umschlag 4 Gedreht

DeviceID: 3005ci
PaperSizesSupported Count: 33
Letter, Legal, Ledger (11 x 17), Statement, Executive, A0, A1, A2, A3, A4, A5, A6, Folio, B1, B2, B3, B4, B5 (JIS), B6, B5 (ISO), Briefumschlag #10, Briefumschlag #9, Briefumschlag Monarch, Briefumschlag #6, Briefumschlag C4, Briefumschlag C5, Briefumschlag DL, Oficio II, 8K, 16K, 216 x 340 mm, 12 x 18, Custom

Press Enter to exit
  Mit Zitat antworten Zitat