2016-11-16 20 views
1

У меня проблема с VB 6 при создании объекта принтера. В принципе, мне нужно создать объект принтера, чтобы я мог установить правильный лоток, на котором должна выполняться печать.Как создать объект принтера в VB

У меня есть имя принтера вместе со мной.

Весь код, который я могу найти в Интернете, включает в себя прокрутку всех доступных принтеров и поиск соответствия имени нашего принтера.

Есть ли способ, которым я могу создать объект принтера prn непосредственно с имени принтера.

Любая помощь будет оценена по достоинству.

+0

VB 6 или VBA - Какой именно он –

+0

Если вы имеете в виду IDE, то это VB 6. – varuog

+0

Так почему же тег VBA? –

ответ

2

Вы не можете. Доступ к коллекции принтеров VB6 осуществляется только по индексу, а не по имени. См. Visual Studio 6 Printer Object, Printers Collection.

Таким образом, вам необходимо найти коллекцию для принтера, который вы хотите. Например:

Private Function FindPrinter(PrinterName As String) As Printer 
    Dim i As Integer 
    For i = 0 To Printers.Count - 1 
    If Printers(i).DeviceName = PrinterName Then 
     Set FindPrinter = Printers(i) 
     Exit For 
    End If 
    Next i 
    Exit Function 
End Function 

Вышесказанное не справиться с ситуацией, когда принтер вы ищете не в коллекции. Вы хотите добавить логику, чтобы покрыть это условие - то, что вы хотите сделать, зависит от ваших конкретных задач и требований. Этот пример также относится к регистру поиска по регистру, поэтому имейте это в виду.

+0

Спасибо за ответ. Код, упомянутый вами, - это то, что я использую в своем приложении. Однако, когда имеется большое количество принтеров (2500+), это, как правило, очень медленно. Так искал обходной путь. – varuog

+0

Если вы не переключаете принтеры, вам не нужно искать коллекцию принтеров каждый раз, разумеется. Найдите его при запуске приложения (или выборе пользователя и т. Д.), Затем сохраните эту ссылку на объект принтера, который вы используете. Немного беспокоиться о производительности при поиске коллекции принтеров. – MarkL