Accès direct à la boîte de dialogue de mon imprimante [Résolu]

Signaler
-
 Zermelo -
Bonjour à tous.

Comment dois-je faire pour, à partir de mon programme, accéder directement à la boîte de dialogue de mon imprimante ?

Merci pour vos réponses.

Étant illettré, je signe d'une croix : ×

5 réponses


Bonjour Zemerlo,

Ton post m'avait échappé et il se trouve que j'avais eu ce besoin également. Voici une solution qui fonctionnait pour moi (et fonctionne encore). Peut-être qu'elle pourra te servir aussi.
J'ai du traffiquer mon code pour qu'il se réduise à un simple exemple.
A tester avec un simple bouton.

Option Strict On
Imports System.Printing
Imports System.Drawing.Printing

Public Class Form1
     Private Declare Auto Function GlobalLock Lib "kernel32.dll" _
    (ByVal handle As IntPtr) As IntPtr
    Private Declare Auto Function GlobalUnlock Lib "kernel32.dll" _
    (ByVal handle As IntPtr) As Integer
    Private Declare Auto Function GlobalFree Lib "kernel32.dll" _
    (ByVal handle As IntPtr) As IntPtr
    Private Declare Auto Function DocumentProperties Lib "winspool.drv" _
    (ByVal hWnd As IntPtr, ByVal hPrinter As IntPtr, _
    ByVal pDeviceName As String, ByVal pDevModeOutput As IntPtr, _
    ByVal pDevModeInput As IntPtr, ByVal fMode As Int32) As Integer


    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim PrintDocument As PrintDocument = New PrintDocument
        Me.OpenPrinterPropertiesDialog(PrintDocument.PrinterSettings)
    End Sub

    Sub OpenPrinterPropertiesDialog(ByVal Settings As PrinterSettings)
        Dim hDevMode As IntPtr = _
        Settings.GetHdevmode(Settings.DefaultPageSettings)
        Dim pDevMode As IntPtr = GlobalLock(hDevMode)
        DocumentProperties(Me.Handle, IntPtr.Zero, _
        Settings.PrinterName, pDevMode, pDevMode, 14)
        GlobalUnlock(hDevMode)
        Settings.SetHdevmode(hDevMode)
        Settings.DefaultPageSettings.SetHdevmode(hDevMode)
        GlobalFree(hDevMode)
    End Sub

End Class

Complément: Faire une référence à System.Printing dans les propriétés du projet.
Messages postés
7274
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 février 2021
120
Bonjour Le pivert.

Merci de m'avoir répondu. Votre code source est remarquable. Cependant, il ne donne qu'un accès indirect à la boîte de dialogue de mon imprimante, puisqu'il passe d'abord par un PageSetupDialog. Pour ma part je passe par un PrintDialog, mais c'est ce genre de chose que je voudrais éviter.

Cordialement.



Étant illettré, je signe d'une croix : ×
Bonjour Banana32.

Merci beaucoup de ta réponse. Je ne peux la lire qu'aujourd'hui, suite à des pannes d'internet répétées (lignes téléphoniques défectueuses dans le coin où j'habite).

Amicales salutations.


Étant illettré, je signe d'une croix : ×