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