Konst_One » 07.11.2007 (Ср) 11:53
Вот здесь все подробненько:http://www.microsoft.com/technet/scriptcenter/guide/sas_prn_lkqw.mspx?mfr=true
Опрос установленных принтеров на компе через WMI (обрати внимание на Status и State):
- Код: Выделить всё
' PrinterWMI.vbs
' Sample VBScript to interrogate Printer properties with WMI
' Author Guy Thomas http://computerperformance.co.uk/
' Version 2.3 - December 2005
' --------------------------------------------------------------'
Option Explicit
Dim objWMIService, objItem, colItems, strComputer, intPrinters
strComputer ="."
intPrinters = 1
' --------------------------------------------
' Pure WMI Section
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery _
("SELECT * FROM Win32_Printer")
Call Wait() ' Goto Sub Routine at the end
' On Error Resume Next
For Each objItem In colItems
WScript.Echo "Printers on " _
& objItem.name & ", Printer Number: " & intPrinters & VbCr & _
"====================================" & VbCr & _
"Availability: " & objItem.Availability & VbCr & _
"Description: " & objItem.Description & VbCr & _
"Printer: " & objItem.DeviceID & VbCr & _
"Driver Name: " & objItem.DriverName & VbCr & _
"Port Name: " & objItem.PortName & VbCr & _
"Printer State: " & objItem.PrinterState & VbCr & _
"Printer Status: " & objItem.PrinterStatus & VbCr & _
"PrintJobDataType: " & objItem.PrintJobDataType & VbCr & _
"Print Processor: " & objItem.PrintProcessor & VbCr & _
"Spool Enabled: " & objItem.SpoolEnabled & VbCr & _
"Separator File: " & objItem.SeparatorFile & VbCr & _
"Queued: " & objItem.Queued & VbCr & _
"Status: " & objItem.Status & VbCr & _
"StatusInfo: " & objItem.StatusInfo & VbCr & _
"Published: " & objItem.Published & VbCr & _
"Shared: " & objItem.Shared & VbCr & _
"ShareName: " & objItem.ShareName & VbCr & _
"Direct: " & objItem.Direct & VbCr & _
"Location: " & objItem.Location & VbCr & _
"Priority: " & objItem.Priority & VbCr & _
"Work Offline: " & objItem.WorkOffline & VbCr & _
"Horizontal Res: " & objItem.HorizontalResolution & VbCr & _
"Vertical Res: " & objItem.VerticalResolution & VbCr & _
""
intPrinters = intPrinters + 1
Next
sub Wait()
If strComputer = "." then
strComputer = "Local Host"
else strComputer = strComputer
end if
WScript.Echo "Wait 2 mins for " & strComputer _
& " to enumerate printers"
End Sub
WScript.Quit
' End of Sample Printer VBScript
через события конкретного принтера:
- Код: Выделить всё
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService. _
ExecNotificationQuery("SELECT * FROM __instancemodificationevent " _
& "WITHIN 30 WHERE TargetInstance ISA 'Win32_Printer'")
i = 0
Do While i = 0
Set objPrinter = colPrinters.NextEvent
If objPrinter.TargetInstance.PrinterStatus <> _
objPrinter.PreviousInstance.PrinterStatus Then
Select Case objPrinter.TargetInstance.PrinterStatus
Case 1 strCurrentState = "Other"
Case 2 strCurrentState = "Unknown"
Case 3 strCurrentState = "Idle"
Case 4 strCurrentState = "Printing"
Case 5 strCurrentState = "Warming Up"
End Select
Select Case objPrinter.PreviousInstance.PrinterStatus
Case 1 strPreviousState = "Other"
Case 2 strPreviousState = "Unknown"
Case 3 strPreviousState = "Idle"
Case 4 strPreviousState = "Printing"
Case 5 strPreviousState = "Warming Up"
End Select
Wscript.Echo objPrinter.TargetInstance.Name _
& " is " & strCurrentState _
& ". The printer previously was " & strPreviousState & "."
End If
Loop
Последний раз редактировалось
Konst_One 07.11.2007 (Ср) 12:02, всего редактировалось 2 раз(а).