none
Comment changer l'imprimante par défaut RRS feed

  • Question

  • Bonjour,

    Le code suivant me permet d'afficher dans une liste déroulante les imprimantes disponible.

    CB_PRINTER.Items.Clear()
            For Each file As Object In Printing.PrinterSettings.InstalledPrinters()
                CB_PRINTER.Items.Add(file)
            Next

    Je souhaite connaitre l'imprimante par défaut, et pouvoir la modifier.

    Salutations

    Julien

    dimanche 20 novembre 2011 15:53

Réponses

  • Bonjour Gilles et Merci,

     

    Je me suis inspirer de vos liens. et voici mon code pour changer l'imprimante par défaut:

    Imports System.Drawing.Printing
    
    Public Class Form1
    
        Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Boolean
        Private WithEvents printDoc As New PrintDocument
    
        Private Sub PopulateInstalledPrintersCombo()
            ' comboInstalledPrinters.Dock = DockStyle.Top
            Controls.Add(comboInstalledPrinters)
    
            ' Add list of installed printers found to the combo box.
            ' The pkInstalledPrinters string will be used to provide the display string.
            Dim i As Integer
            Dim pkInstalledPrinters As String
    
            For i = 0 To PrinterSettings.InstalledPrinters.Count - 1
                pkInstalledPrinters = PrinterSettings.InstalledPrinters.Item(i)
                comboInstalledPrinters.Items.Add(pkInstalledPrinters)
                If (printDoc.PrinterSettings.IsDefaultPrinter()) Then
                    comboInstalledPrinters.Text = printDoc.PrinterSettings.PrinterName
                End If
            Next
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            PopulateInstalledPrintersCombo()
        End Sub
    
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_SetDefaultPrinter.Click
    
            SetDefaultPrinter(comboInstalledPrinters.Text)
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            PopulateInstalledPrintersCombo()
        End Sub
    End Class
    

    Salutations

     

    • Marqué comme réponse Julien Prest lundi 21 novembre 2011 21:15
    lundi 21 novembre 2011 20:42

Toutes les réponses

  • Bonjour,

    La propriété PrinterSettings.InstalledPrinters vous permet de récupérer toutes les imprimantes de l'utilisateur :

    http://msdn.microsoft.com/fr-fr/library/system.drawing.printing.printersettings.installedprinters.aspx

    Ensuite pour chaque imprimante récupérée vous avez une propriété IsDefaultPrinter qui indique si l'imprimante est celle par défaut.

    http://msdn.microsoft.com/fr-fr/library/system.drawing.printing.printersettings.isdefaultprinter.aspx

    Pour changer l'imprimante par défaut il faudra utiliser la fonction Windows SetDefaultPrinter :

    http://www.pinvoke.net/default.aspx/winspool/SetDefaultPrinter.html?diff=y

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    dimanche 20 novembre 2011 18:52
    Modérateur
  • Bonjour Gilles et Merci,

     

    Je me suis inspirer de vos liens. et voici mon code pour changer l'imprimante par défaut:

    Imports System.Drawing.Printing
    
    Public Class Form1
    
        Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Boolean
        Private WithEvents printDoc As New PrintDocument
    
        Private Sub PopulateInstalledPrintersCombo()
            ' comboInstalledPrinters.Dock = DockStyle.Top
            Controls.Add(comboInstalledPrinters)
    
            ' Add list of installed printers found to the combo box.
            ' The pkInstalledPrinters string will be used to provide the display string.
            Dim i As Integer
            Dim pkInstalledPrinters As String
    
            For i = 0 To PrinterSettings.InstalledPrinters.Count - 1
                pkInstalledPrinters = PrinterSettings.InstalledPrinters.Item(i)
                comboInstalledPrinters.Items.Add(pkInstalledPrinters)
                If (printDoc.PrinterSettings.IsDefaultPrinter()) Then
                    comboInstalledPrinters.Text = printDoc.PrinterSettings.PrinterName
                End If
            Next
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            PopulateInstalledPrintersCombo()
        End Sub
    
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_SetDefaultPrinter.Click
    
            SetDefaultPrinter(comboInstalledPrinters.Text)
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            PopulateInstalledPrintersCombo()
        End Sub
    End Class
    

    Salutations

     

    • Marqué comme réponse Julien Prest lundi 21 novembre 2011 21:15
    lundi 21 novembre 2011 20:42