Gerer le bouton "annuler impression" de windows dans un programme vb n

Signaler
Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020
-
Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
-
je souhaiterai le "bout de code" qui me permette de vider réellement l'impression en cour (pour l'instant il ne fait que la suspendre si je clique sur annuler). Je suis en train de me noyer sous les lignes de codes que je ne parviens pas à exploiter ni même comprendre.

Voici le code qui pose problème (pas de gestion du bouton annuler).

        Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

    If PageNumber > 0 Then
            'MsgBox(PageNumber)
            e.Graphics.DrawString("ART: " & ReferenceArt, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
            e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
            e.Graphics.DrawString(DesignationArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
            e.Graphics.DrawString("QTE :" & QuantiteArt, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
            e.Graphics.DrawString(PackArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 30, 165) ' & PageNumber() 'ici on indique le nombre d'impression restante
            PageNumber -= 1 'on retire une impression
            e.HasMorePages = (PageNumber > 0)
        End If

End Sub


Private Sub Imprime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Imprime.Click
PrintDocument1.Print()
End Sub


Merci par avance pour votre aide.

bfb <img src="/imgs2

2 réponses

Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
112
Bonjour,

tu as déjà posé cette question ici:

https://codes-sources.commentcamarche.net/forum/affich-10102305-gerer-annuler-impression

vu que tu n'as pas trouvé de réponse te satisfaisant, pourquoi ne pas faire manuellement un clic dans la barre de tâche sur l'icône de ton imprimante pour supprimer le document en cours?

Sinon voir ces sites:

https://www.gladir.com/CODER/VBNETWINDOWS/abortdoc.htm

https://codes-sources.commentcamarche.net/source/17708-l-api-abortdoc-permet-d-annuler-l-impression-en-cours-d-un-document

mais je trouve cela bien compliqué alors que tu as une solution toute simple. A toi de voir!


Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020
>
Messages postés
14758
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020

oups je suis désolé comment transférer ma question sur le même sujet? et si quelqu un à "LA" solution s'il vous plait
Messages postés
14758
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
19 septembre 2020
433 >
Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020

pas de transfert possible
Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
112
Dans le lien de la source il y a ce code en VB6, vois si tu peux l'adapter!

Private Declare Function AbortDoc Lib "gdi32" (ByVal hdc As Long) As Long

Sub Command1_Click()
    Dim R As Long
    R = AbortDoc(Printer.hdc)
End Sub

'Lancez le programme par F5.
'Vous pouvez alors annuler l'impression par la touche Enter, la touche
'Echappement ou par un click sur le bouton de commande.


@+ le Pivert
Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020
>
Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020

Merci pour le bout de code mais ".hdc" n'existe plus en .net j'avais vu ce code dans mes précédentes recherche et ça n'a pas abouti. Mais merci pour l'aide quand même.
Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
112 >
Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020

Messages postés
21
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
16 août 2020

Voici ce que j'ai trouvé ça supprime l'impression mais elle reste encore en mémoire et reprend dès que l'on clique de nouveau sur imprimer

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
         'c'est ici que tout ce joue
         If e.Cancel = True Then
            e.HasMorePages = 0
            PageNumber = 0
            e.HasMorePages = False
            Refresh()
            Exit Sub
         End If

	If PageNumber > 0 Then
             e.Graphics.DrawString("ART: " & ReferenceArt, New Font("Impact", 16, FontStyle.Bold), Brushes.Black, 30, 20) '1er nb marge gauche 2e marge haute
            e.Graphics.DrawString("Désignation", New Font("Arial", 8, FontStyle.Regular), Brushes.Black, 42, 80) ' Désignation:
            e.Graphics.DrawString(DesignationArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 40, 100) '
            e.Graphics.DrawString("QTE :" & QuantiteArt, New Font("Arial", 16, FontStyle.Bold), Brushes.Black, 30, 138) '
            e.Graphics.DrawString(PackArt, New Font("Arial", 12, FontStyle.Bold), Brushes.Black, 30, 165) ' & PageNumber() 'ici on indique le nombre d'impression restante
            PageNumber -= 1 'on retire une impression
            e.HasMorePages = (PageNumber > 0)
        End If
end sub
--
bfb <img src="/imgs2
Messages postés
6923
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
112
 'c'est ici que tout ce joue
         If e.Cancel = True Then
            e.HasMorePages = 0
            PageNumber = 0
            e.HasMorePages = False
            Refresh()
            Exit Sub 'tu quittes donc la 2ème partie n'est pas prise en compte
         End If


Mais je ne comprends toujours pas pourquoi tu t'embêtes alors qu'il est si facile de le faire manuellement!!!!!!!!!!!!!
Tu n'as pas besoin d'être féru en informatique!