1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297:
  				 | 									program GetWMI_Win32_PrinterInfo;   {$APPTYPE CONSOLE}
  uses   System.SysUtils,   Winapi.ActiveX,   System.Win.ComObj,   System.Variants;
  const   WbemUser =''; WbemPassword =''; WbemComputer ='localhost'; wbemFlagForwardOnly = $00000020;
  function VarToInt(const AVariant: Variant): INT64;begin Result := StrToIntDef(Trim(VarToStr(AVariant)), 0); end;
 
  procedure  GetWin32_PrinterInfo; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; 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('Attributes                     %d',[VARTOINT(FWbemObject.Attributes)]));    Writeln(Format('Availability                   %d',[VARTOINT(FWbemObject.Availability)]));    Writeln(Format('AveragePagesPerMinute          %d',[VARTOINT(FWbemObject.AveragePagesPerMinute)]));    Writeln(Format('Caption                        %s',[VARTOSTR(FWbemObject.Caption)]));    Writeln(Format('Comment                        %s',[VARTOSTR(FWbemObject.Comment)]));    Writeln(Format('ConfigManagerErrorCode         %d',[VARTOINT(FWbemObject.ConfigManagerErrorCode)]));    Writeln(Format('ConfigManagerUserConfig        %s',[VARTOSTR(FWbemObject.ConfigManagerUserConfig)]));    Writeln(Format('CreationClassName              %s',[VARTOSTR(FWbemObject.CreationClassName)]));    Writeln(Format('CurrentCapabilities            %d',[VARTOINT(FWbemObject.CurrentCapabilities)]));    Writeln(Format('CurrentCharSet                 %s',[VARTOSTR(FWbemObject.CurrentCharSet)]));    Writeln(Format('CurrentLanguage                %d',[VARTOINT(FWbemObject.CurrentLanguage)]));    Writeln(Format('CurrentMimeType                %s',[VARTOSTR(FWbemObject.CurrentMimeType)]));    Writeln(Format('CurrentNaturalLanguage         %s',[VARTOSTR(FWbemObject.CurrentNaturalLanguage)]));    Writeln(Format('CurrentPaperType               %s',[VARTOSTR(FWbemObject.CurrentPaperType)]));    Writeln(Format('Default                        %s',[VARTOSTR(FWbemObject.Default)]));    Writeln(Format('DefaultCapabilities            %d',[VARTOINT(FWbemObject.DefaultCapabilities)]));    Writeln(Format('DefaultCopies                  %d',[VARTOINT(FWbemObject.DefaultCopies)]));    Writeln(Format('DefaultLanguage                %d',[VARTOINT(FWbemObject.DefaultLanguage)]));    Writeln(Format('DefaultMimeType                %s',[VARTOSTR(FWbemObject.DefaultMimeType)]));    Writeln(Format('DefaultNumberUp                %d',[VARTOINT(FWbemObject.DefaultNumberUp)]));    Writeln(Format('DefaultPaperType               %s',[VARTOSTR(FWbemObject.DefaultPaperType)]));    Writeln(Format('DefaultPriority                %d',[VARTOINT(FWbemObject.DefaultPriority)]));    Writeln(Format('Description                    %s',[VARTOSTR(FWbemObject.Description)]));    Writeln(Format('DetectedErrorState             %d',[VARTOINT(FWbemObject.DetectedErrorState)]));    Writeln(Format('DeviceID                       %s',[VARTOSTR(FWbemObject.DeviceID)]));    Writeln(Format('Direct                         %s',[VARTOSTR(FWbemObject.Direct)]));    Writeln(Format('DoCompleteFirst                %s',[VARTOSTR(FWbemObject.DoCompleteFirst)]));    Writeln(Format('DriverName                     %s',[VARTOSTR(FWbemObject.DriverName)]));    Writeln(Format('EnableBIDI                     %s',[VARTOSTR(FWbemObject.EnableBIDI)]));    Writeln(Format('EnableDevQueryPrint            %s',[VARTOSTR(FWbemObject.EnableDevQueryPrint)]));    Writeln(Format('ErrorCleared                   %s',[VARTOSTR(FWbemObject.ErrorCleared)]));    Writeln(Format('ErrorDescription               %s',[VARTOSTR(FWbemObject.ErrorDescription)]));    Writeln(Format('ExtendedDetectedErrorState     %d',[VARTOINT(FWbemObject.ExtendedDetectedErrorState)]));    Writeln(Format('ExtendedPrinterStatus          %d',[VARTOINT(FWbemObject.ExtendedPrinterStatus)]));    Writeln(Format('Hidden                         %s',[VARTOSTR(FWbemObject.Hidden)]));    Writeln(Format('HorizontalResolution           %d',[VARTOINT(FWbemObject.HorizontalResolution)]));    Writeln(Format('InstallDate                    %s',[VARTOSTR(FWbemObject.InstallDate)]));    Writeln(Format('JobCountSinceLastReset         %d',[VARTOINT(FWbemObject.JobCountSinceLastReset)]));    Writeln(Format('KeepPrintedJobs                %s',[VARTOSTR(FWbemObject.KeepPrintedJobs)]));    Writeln(Format('LastErrorCode                  %d',[VARTOINT(FWbemObject.LastErrorCode)]));    Writeln(Format('Local                          %s',[VARTOSTR(FWbemObject.Local)]));    Writeln(Format('Location                       %s',[VARTOSTR(FWbemObject.Location)]));    Writeln(Format('MarkingTechnology              %d',[VARTOINT(FWbemObject.MarkingTechnology)]));    Writeln(Format('MaxCopies                      %d',[VARTOINT(FWbemObject.MaxCopies)]));    Writeln(Format('MaxNumberUp                    %d',[VARTOINT(FWbemObject.MaxNumberUp)]));    Writeln(Format('MaxSizeSupported               %d',[VARTOINT(FWbemObject.MaxSizeSupported)]));    Writeln(Format('Name                           %s',[VARTOSTR(FWbemObject.Name)]));    Writeln(Format('Network                        %s',[VARTOSTR(FWbemObject.Network)]));    Writeln(Format('Parameters                     %s',[VARTOSTR(FWbemObject.Parameters)]));    Writeln(Format('PNPDeviceID                    %s',[VARTOSTR(FWbemObject.PNPDeviceID)]));    Writeln(Format('PortName                       %s',[VARTOSTR(FWbemObject.PortName)]));    Writeln(Format('PowerManagementCapabilities    %d',[VARTOINT(FWbemObject.PowerManagementCapabilities)]));    Writeln(Format('PowerManagementSupported       %s',[VARTOSTR(FWbemObject.PowerManagementSupported)]));    Writeln(Format('PrinterState                   %d',[VARTOINT(FWbemObject.PrinterState)]));    Writeln(Format('PrinterStatus                  %d',[VARTOINT(FWbemObject.PrinterStatus)]));    Writeln(Format('PrintJobDataType               %s',[VARTOSTR(FWbemObject.PrintJobDataType)]));    Writeln(Format('PrintProcessor                 %s',[VARTOSTR(FWbemObject.PrintProcessor)]));    Writeln(Format('Priority                       %d',[VARTOINT(FWbemObject.Priority)]));    Writeln(Format('Published                      %s',[VARTOSTR(FWbemObject.Published)]));    Writeln(Format('Queued                         %s',[VARTOSTR(FWbemObject.Queued)]));    Writeln(Format('RawOnly                        %s',[VARTOSTR(FWbemObject.RawOnly)]));    Writeln(Format('SeparatorFile                  %s',[VARTOSTR(FWbemObject.SeparatorFile)]));    Writeln(Format('ServerName                     %s',[VARTOSTR(FWbemObject.ServerName)]));    Writeln(Format('Shared                         %s',[VARTOSTR(FWbemObject.Shared)]));    Writeln(Format('ShareName                      %s',[VARTOSTR(FWbemObject.ShareName)]));    Writeln(Format('SpoolEnabled                   %s',[VARTOSTR(FWbemObject.SpoolEnabled)]));    Writeln(Format('StartTime                      %s',[VARTOSTR(FWbemObject.StartTime)]));    Writeln(Format('Status                         %s',[VARTOSTR(FWbemObject.Status)]));    Writeln(Format('StatusInfo                     %d',[VARTOINT(FWbemObject.StatusInfo)]));    Writeln(Format('SystemCreationClassName        %s',[VARTOSTR(FWbemObject.SystemCreationClassName)]));    Writeln(Format('SystemName                     %s',[VARTOSTR(FWbemObject.SystemName)]));    Writeln(Format('TimeOfLastReset                %s',[VARTOSTR(FWbemObject.TimeOfLastReset)]));    Writeln(Format('UntilTime                      %s',[VARTOSTR(FWbemObject.UntilTime)]));    Writeln(Format('VerticalResolution             %d',[VARTOINT(FWbemObject.VerticalResolution)]));    Writeln(Format('WorkOffline                    %s',[VARTOSTR(FWbemObject.WorkOffline)]));    Writeln('--------------------------------------------------------------------------');     FWbemObject:=Unassigned;   end; end;
  procedure  GetWin32_PrinterConfigurationInfo; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; begin;   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_PrinterConfiguration','WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   while oEnum.Next(1, FWbemObject, iValue) = 0 do   begin     Writeln(Format('BitsPerPel              %d',[VARTOINT(FWbemObject.BitsPerPel)]));    Writeln(Format('Caption                 %s',[VARTOSTR(FWbemObject.Caption)]));    Writeln(Format('Collate                 %s',[VARTOSTR(FWbemObject.Collate)]));    Writeln(Format('Color                   %d',[VARTOINT(FWbemObject.Color)]));    Writeln(Format('Copies                  %d',[VARTOINT(FWbemObject.Copies)]));    Writeln(Format('Description             %s',[VARTOSTR(FWbemObject.Description)]));    Writeln(Format('DeviceName              %s',[VARTOSTR(FWbemObject.DeviceName)]));    Writeln(Format('DisplayFlags            %d',[VARTOINT(FWbemObject.DisplayFlags)]));    Writeln(Format('DisplayFrequency        %d',[VARTOINT(FWbemObject.DisplayFrequency)]));    Writeln(Format('DitherType              %d',[VARTOINT(FWbemObject.DitherType)]));    Writeln(Format('DriverVersion           %d',[VARTOINT(FWbemObject.DriverVersion)]));    Writeln(Format('Duplex                  %s',[VARTOSTR(FWbemObject.Duplex)]));    Writeln(Format('FormName                %s',[VARTOSTR(FWbemObject.FormName)]));    Writeln(Format('HorizontalResolution    %d',[VARTOINT(FWbemObject.HorizontalResolution)]));    Writeln(Format('ICMIntent               %d',[VARTOINT(FWbemObject.ICMIntent)]));    Writeln(Format('ICMMethod               %d',[VARTOINT(FWbemObject.ICMMethod)]));    Writeln(Format('LogPixels               %d',[VARTOINT(FWbemObject.LogPixels)]));    Writeln(Format('MediaType               %d',[VARTOINT(FWbemObject.MediaType)]));    Writeln(Format('Name                    %s',[VARTOSTR(FWbemObject.Name)]));    Writeln(Format('Orientation             %d',[VARTOINT(FWbemObject.Orientation)]));    Writeln(Format('PaperLength             %d',[VARTOINT(FWbemObject.PaperLength)]));    Writeln(Format('PaperSize               %s',[VARTOSTR(FWbemObject.PaperSize)]));    Writeln(Format('PaperWidth              %d',[VARTOINT(FWbemObject.PaperWidth)]));    Writeln(Format('PelsHeight              %d',[VARTOINT(FWbemObject.PelsHeight)]));    Writeln(Format('PelsWidth               %d',[VARTOINT(FWbemObject.PelsWidth)]));    Writeln(Format('PrintQuality            %d',[VARTOINT(FWbemObject.PrintQuality)]));    Writeln(Format('Scale                   %d',[VARTOINT(FWbemObject.Scale)]));    Writeln(Format('SettingID               %s',[VARTOSTR(FWbemObject.SettingID)]));    Writeln(Format('SpecificationVersion    %d',[VARTOINT(FWbemObject.SpecificationVersion)]));    Writeln(Format('TTOption                %d',[VARTOINT(FWbemObject.TTOption)]));    Writeln(Format('VerticalResolution      %d',[VARTOINT(FWbemObject.VerticalResolution)]));    Writeln(Format('XResolution             %d',[VARTOINT(FWbemObject.XResolution)]));    Writeln(Format('YResolution             %d',[VARTOINT(FWbemObject.YResolution)]));    Writeln('========================================================================');     FWbemObject:=Unassigned;   end; end;
  procedure  GetWin32_PrintJobInfo; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; begin;   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_PrintJob','WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   while oEnum.Next(1, FWbemObject, iValue) = 0 do   begin     Writeln(Format('Caption           %s',[VARTOSTR(FWbemObject.Caption)]));    Writeln(Format('Color             %s',[VARTOSTR(FWbemObject.Color)]));    Writeln(Format('DataType          %s',[VARTOSTR(FWbemObject.DataType)]));    Writeln(Format('Description       %s',[VARTOSTR(FWbemObject.Description)]));    Writeln(Format('Document          %s',[VARTOSTR(FWbemObject.Document)]));    Writeln(Format('DriverName        %s',[VARTOSTR(FWbemObject.DriverName)]));    Writeln(Format('ElapsedTime       %s',[VARTOSTR(FWbemObject.ElapsedTime)]));    Writeln(Format('HostPrintQueue    %s',[VARTOSTR(FWbemObject.HostPrintQueue)]));    Writeln(Format('InstallDate       %s',[VARTOSTR(FWbemObject.InstallDate)]));    Writeln(Format('JobId             %d',[VARTOINT(FWbemObject.JobId)]));    Writeln(Format('JobStatus         %s',[VARTOSTR(FWbemObject.JobStatus)]));    Writeln(Format('Name              %s',[VARTOSTR(FWbemObject.Name)]));    Writeln(Format('Notify            %s',[VARTOSTR(FWbemObject.Notify)]));    Writeln(Format('Owner             %s',[VARTOSTR(FWbemObject.Owner)]));    Writeln(Format('PagesPrinted      %d',[VARTOINT(FWbemObject.PagesPrinted)]));    Writeln(Format('PaperLength       %d',[VARTOINT(FWbemObject.PaperLength)]));    Writeln(Format('PaperSize         %s',[VARTOSTR(FWbemObject.PaperSize)]));    Writeln(Format('PaperWidth        %d',[VARTOINT(FWbemObject.PaperWidth)]));    Writeln(Format('Parameters        %s',[VARTOSTR(FWbemObject.Parameters)]));    Writeln(Format('PrintProcessor    %s',[VARTOSTR(FWbemObject.PrintProcessor)]));    Writeln(Format('Priority          %d',[VARTOINT(FWbemObject.Priority)]));    Writeln(Format('Size              %d',[VARTOINT(FWbemObject.Size)]));    Writeln(Format('SizeHigh          %d',[VARTOINT(FWbemObject.SizeHigh)]));    Writeln(Format('StartTime         %s',[VARTOSTR(FWbemObject.StartTime)]));    Writeln(Format('Status            %s',[VARTOSTR(FWbemObject.Status)]));    Writeln(Format('StatusMask        %d',[VARTOINT(FWbemObject.StatusMask)]));    Writeln(Format('TimeSubmitted     %s',[VARTOSTR(FWbemObject.TimeSubmitted)]));    Writeln(Format('TotalPages        %d',[VARTOINT(FWbemObject.TotalPages)]));    Writeln(Format('UntilTime         %s',[VARTOSTR(FWbemObject.UntilTime)]));    Writeln('############################################################');     FWbemObject:=Unassigned;   end; end;
  procedure  GetWin32_PrinterDriverInfo; var   FSWbemLocator : OLEVariant;   FWMIService   : OLEVariant;   FWbemObjectSet: OLEVariant;   FWbemObject   : OLEVariant;   oEnum         : IEnumvariant;   iValue        : LongWord; begin;   FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');   FWMIService   := FSWbemLocator.ConnectServer(WbemComputer, 'root\CIMV2', WbemUser, WbemPassword);   FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_PrinterDriver','WQL',wbemFlagForwardOnly);   oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;   while oEnum.Next(1, FWbemObject, iValue) = 0 do   begin     Writeln(Format('Caption                    %s',[VARTOSTR(FWbemObject.Caption)]));    Writeln(Format('ConfigFile                 %s',[VARTOSTR(FWbemObject.ConfigFile)]));    Writeln(Format('CreationClassName          %s',[VARTOSTR(FWbemObject.CreationClassName)]));    Writeln(Format('DataFile                   %s',[VARTOSTR(FWbemObject.DataFile)]));    Writeln(Format('DefaultDataType            %s',[VARTOSTR(FWbemObject.DefaultDataType)]));    Writeln(Format('Description                %s',[VARTOSTR(FWbemObject.Description)]));    Writeln(Format('DriverPath                 %s',[VARTOSTR(FWbemObject.DriverPath)]));    Writeln(Format('FilePath                   %s',[VARTOSTR(FWbemObject.FilePath)]));    Writeln(Format('HelpFile                   %s',[VARTOSTR(FWbemObject.HelpFile)]));    Writeln(Format('InfName                    %s',[VARTOSTR(FWbemObject.InfName)]));    Writeln(Format('InstallDate                %s',[VARTOSTR(FWbemObject.InstallDate)]));    Writeln(Format('MonitorName                %s',[VARTOSTR(FWbemObject.MonitorName)]));    Writeln(Format('Name                       %s',[VARTOSTR(FWbemObject.Name)]));    Writeln(Format('OEMUrl                     %s',[VARTOSTR(FWbemObject.OEMUrl)]));    Writeln(Format('Started                    %s',[VARTOSTR(FWbemObject.Started)]));    Writeln(Format('StartMode                  %s',[VARTOSTR(FWbemObject.StartMode)]));    Writeln(Format('Status                     %s',[VARTOSTR(FWbemObject.Status)]));    Writeln(Format('SupportedPlatform          %s',[VARTOSTR(FWbemObject.SupportedPlatform)]));    Writeln(Format('SystemCreationClassName    %s',[VARTOSTR(FWbemObject.SystemCreationClassName)]));    Writeln(Format('SystemName                 %s',[VARTOSTR(FWbemObject.SystemName)]));    Writeln(Format('Version                    %d',[VARTOINT(FWbemObject.Version)]));    Writeln('::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');     FWbemObject:=Unassigned;   end; end;
  begin  try     CoInitialize(nil);     try       GetWin32_PrinterInfo;       GetWin32_PrinterConfigurationInfo;       GetWin32_PrintJobInfo;       GetWin32_PrinterDriverInfo;     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.					 				 |