EnumForms echoue à chaque fois

boulacmoi Messages postés 10 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 4 juin 2009 - 4 juin 2009 à 17:43
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 5 juin 2009 à 09:53
Bonjour bonjour,

Je suis actuellement en train de faire un petit programme pour me permettre d'imprimer des fichiers en masses dans des formats de papiers non standards. Pour cela j'ai créé des formats de papiers personnalisé, mais pour que cela marche, j'ai besoin d'avoir l'ID de ces formats de papiers. J'ai un peu cherché et j'ai cru qu'avec l'API enumforms, je pouvais récuperer cette informations, et comme le titre l'indique, cela echoue à chaque fois.
Je vous met le code ci dessous, aucun où quelqu'un saurait pourquoi ?
Merci bien,

    Public Declare Function EnumForms Lib "winspool.drv" Alias "EnumFormsA" _
        (ByVal hPrinter As Long, ByVal Level As Integer, ByRef pForm As FORM_INFO_1(), _
        ByVal cbBuf As Integer, ByRef pcbNeeded As Integer, _
        ByRef pcReturned As Integer) As Boolean

    Public Declare Function OpenPrinter Lib "winspool.drv" _
        Alias "OpenPrinterA" (ByVal pPrinterName As String, _
        ByRef phPrinter As Long, ByVal pDefault As Long) As Boolean

    Public Declare Function ClosePrinter Lib "winspool.drv" _
        (ByVal hPrinter As Long) As Long

    Public Structure FORM_INFO_1
        Public Flags As Long
        Public pName As String
        Public Size As SIZEL
        Public ImageableArea As RECTL
    End Structure

    Public Structure RECTL
        Public Left As Long
        Public Top As Long
        Public Right As Long
        Public Bottom As Long
    End Structure

    Public Structure SIZEL
        Public cx As Long
        Public cy As Long
    End Structure

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim PrintHandle As Long
        Dim ReturnValue As Boolean
        Dim SizeNeeded As Integer
        Dim Buffer(1023) As FORM_INFO_1
        Dim NbrForms As Integer

        ReturnValue = OpenPrinter("PDFCreator", PrintHandle, Nothing)
        ClosePrinter(PrintHandle)
        ReturnValue = EnumForms(PrintHandle, 1, Buffer, 1024, SizeNeeded, NbrForms)

    End Sub

3 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 juin 2009 à 17:53
salut,
en dotnet il faut modifier les api, structures et constantes :

long handle devient intptr


long autre devient integer
integer devient short

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
boulacmoi Messages postés 10 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 4 juin 2009
4 juin 2009 à 22:23
Salut,
Merci pour tes conseils, j'ai fait ce que tu m'as dit, et ça échoue toujours.
OpenPrinter et ClosePrinter fonctionne, mais pas enumforms, c'est louche
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 juin 2009 à 09:53
que retourne openprinter?
0
Rejoignez-nous