У нас есть старая система, которая печатает целую вечность, потому что VB6 проходит через все доступные принтеры, пока не найдет нужный принтер для печати.For Each xx In Printers
Проблема в том, что объект «Принтеры» загружает тонны принтеров и значительно замедляет работу программы. Я пытался использовать WMI, но не знаю, возможно ли передать объект принтера обратно. Сбой в строке CollectPrinters = objPrinter
.
Public Function CollectPrinters(ByVal PrinterToUse As String) As Printer
Dim strComputer As String
Dim objWMIService As Object
Dim strPrinterList As String
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer WHERE Local = True AND DeviceID LIKE 'client preview%'")
For Each objPrinter In colInstalledPrinters
Debug.Print objPrinter.NAME
strPrinterList = strPrinterList + objPrinter.NAME & vbCrLf
If objPrinter.NAME = PrinterToUse Then
'CollectPrinters = objPrinter
Exit Function
End If
Next
End Function
Если я лаю не на том дереве, пожалуйста, укажите мне правильное направление.