Accès direct à la boîte de dialogue de mon imprimante

Résolu
Zermelo - 1 déc. 2012 à 13:07
 Zermelo - 17 déc. 2012 à 14:41
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

Utilisateur anonyme
11 déc. 2012 à 00:16
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
3
Utilisateur anonyme
11 déc. 2012 à 00:18
Complément: Faire une référence à System.Printing dans les propriétés du projet.
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 déc. 2012 à 13:54
0
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 : ×
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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 : ×
0
Rejoignez-nous