ГлавнаяMS ACCESS Пример использования WMI для работы с принтерами
Пример использования WMI для работы с принтерами
Автор osmor
12.10.2005 г.
Public Function listPrinter() 'Выводит список принтеров установленных на локальном компьютере On Error Resume Next Dim objWMIService As Object Dim colPrinters As Object Dim objPrinter As Object Dim strStatus As String
Set objWMIService = GetObject("winmgmts:\\" & "localhost" & "\root\CIMV2") Set colPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer") For Each objPrinter In colPrinters Debug.Print "Имя : " & objPrinter.Name & IIf(objPrinter.Default, " (По умолчанию)", "") Debug.Print IIf(objPrinter.network, "Сетевой", "Локальный")
Debug.Print "Порт : " & objPrinter.portName Select Case objPrinter.PrinterStatus Case 3 strStatus = "Ожидает" Case 4 strStatus = "Печатает" Case 5 strStatus = "Подготовка" Case 6 strStatus = "Остановлен" Case 7 strStatus = "Выключен" Case Else strStatus = "Неизвестный" End Select Debug.Print "Статус: " & strStatus Debug.Print Next
End Function
Public Function SetDefaultPrinter(strNamePrinter As String) 'Устанавливает принтер по умолчанию 'Фича - почему-то запрос не находит принтер в имени которого есть "" 'именно по этому для отбора используется LIKE, для поиска по части имени
On Error Resume Next Dim objWMIService As Object Dim colPrinters As Object Dim objPrinter As Object
Set objWMIService = GetObject("winmgmts:\\" & "localhost" & "\root\CIMV2") Set colPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer Where Name Like '%" & strNamePrinter & "%'") For Each objPrinter In colPrinters objPrinter.SetDefaultPrinter
Next End Function
Public Function PrintTestPage(strNamePrinter As String) 'Печать тестовой страницы 'Фича - почему-то запрос не находит принтер в имени которого есть "" 'именно по этому для отбора используется LIKE, для поиска по части имени
On Error Resume Next Dim objWMIService As Object Dim colPrinters As Object Dim objPrinter As Object
Set objWMIService = GetObject("winmgmts:\\" & "localhost" & "\root\CIMV2") Set colPrinters = objWMIService.ExecQuery("SELECT * FROM Win32_Printer Where Name Like '%" & strNamePrinter & "%'") For Each objPrinter In colPrinters objPrinter.PrintTestPage 'так же можно: 'objPrinter.Pause - приостановить печать 'objPrinter.Resume - возобновить печать 'objPrinter.CancelAllJobs - Отменить все задания Next End Function