| 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.
 |