Fiínek Cahů Ответов: 2

Как я могу установить принтер по умолчанию в VB.NET


Я пытаюсь переключить принтер по умолчанию, но не знаю, что не так. Вы не могли бы мне помочь?

Что я уже пробовал:

Мой код:

Private Function DefaultPrinterName1(sender As Object, e As EventArgs)

        Dim oPS As New System.Drawing.Printing.PrinterSettings
        Try
            DefaultPrinterName1 = oPS.PrinterName = "Vario III 107/12 (kopie 1)"
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Capturing Default Printer", MessageBoxButtons.OK)
        Finally
            oPS = Nothing
        End Try
    End Function

lw@zi

Можете ли вы добавить сообщение об ошибке, которое вы получаете?

[no name]

никакой ошибки, ничего не случится

[no name]

У меня есть кнопка, где я вызываю эту функцию

Частная суб методе button2_click(отправителя как объект, а равно EventArgs) обрабатывает элемент button2.Нажмите
DefaultPrinterName1(отправитель, e)
Конец Подводной Лодки

2 Ответов

Рейтинг:
13

lw@zi

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

С#

[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetDefaultPrinter(string Name);



VB.Net
<DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)>
Public Shared Function SetDefaultPrinter(Name As String) As Boolean
End Function


Затем вы можете вызвать эту функцию с именем принтера. Обратите внимание, что указанный принтер уже должен быть установлен на компьютере.


[no name]

и где я могу написать эту часть кода? &ЛТ;атрибут DllImport("помощью winspool.ДРВ", кодировка:=набор символов.Auto, SetLastError:=True)>

lw@zi

Это должно быть в вашем классе формы. Аналогично другим методам, которые вы бы создали

[no name]

после того, как я поместил это в свой код, который показывает много ошибок: dllimport не определен, charset не определен

lw@zi

Вам нужно будет добавить операторы импорта для System.Runtime.InteropServices.

[no name]

спасибо :)

lw@zi

Без проблем.

Рейтинг:
1

‫عبدالله حسن محمد المغربى‬‎

Shell(String.Format("rundll32 printui.dll,PrintUIEntry /y /n ""{0}""", nameprinter1))