begin process at 2012 02 12 11:54:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Imprimante

 > GESTIONNAIRE DES TACHES D'IMPRESSION (IMPRIMANTES)

GESTIONNAIRE DES TACHES D'IMPRESSION (IMPRIMANTES)


 Information sur la source

Note :
9,8 / 10 - par 5 personnes
9,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Imprimante Niveau :Expert Date de création :27/05/2003 Date de mise à jour :09/09/2003 20:22:19 Vu / téléchargé :15 769 / 1 665

Auteur : ShareVB

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note


 Description

Ce code permet d'obtenir la liste des fichiers en cours d'impression sur toutes les imprimantes installées sur le système.
Il permet de mettre en pause, de faire reprendre,d'annuler, de supprimer et redémarrer un travail d'impression
c'est un peu un clone du spooler windows :) lol  

Source

  • Option Explicit
  • Private Declare Function ClosePrinter Lib "winspool.drv" _
  • (ByVal hPrinter As Long) As Long
  • Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
  • "OpenPrinterA" (ByVal pPrinterName As String, phPrinter _
  • As Long, pDefault As Any) As Long
  • Private Declare Function EnumJobs Lib "winspool.drv" Alias _
  • "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob _
  • As Long, ByVal NoJobs As Long, ByVal Level As Long, _
  • pJob As Long, ByVal cdBuf As Long, pcbNeeded As _
  • Long, pcReturned As Long) As Long
  • Private Declare Function SetJob Lib "winspool.drv" Alias _
  • "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, _
  • ByVal Level As Long, ByRef pJob As JOB_INFO_1, ByVal _
  • Command As Long) As Long
  • Private Declare Function PtrToStr Lib "kernel32" Alias _
  • "lstrcpyA" (ByVal RetVal As String, ByVal Ptr As _
  • Long) As Long
  • Private Declare Function StrLen Lib "kernel32" Alias _
  • "lstrlenA" (ByVal Ptr As Long) As Long
  • Declare Function FileTimeToLocalFileTime Lib "kernel32" _
  • (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
  • Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  • Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long
  • Private Type FILETIME
  • dwLowDateTime As Long
  • dwHighDateTime As Long
  • End Type
  • Public Type SYSTEMTIME
  • wYear As Integer
  • wMonth As Integer
  • wDayOfWeek As Integer
  • wDay As Integer
  • wHour As Integer
  • wMinute As Integer
  • wSecond As Integer
  • wMilliseconds As Integer
  • End Type
  • Public Type JOB_INFO_1
  • JobId As Long
  • pPrinterName As String
  • pMachineName As String
  • pUserName As String
  • pDocument As String
  • pDatatype As String
  • pStatus As String
  • Status As Long
  • Priority As Long
  • Position As Long
  • TotalPages As Long
  • PagesPrinted As Long
  • Submitted As SYSTEMTIME
  • End Type
  • 'Public Type JOB_INFO_2
  • ' JobId As Long
  • ' pPrinterName As String
  • ' pMachineName As String
  • ' pUserName As String
  • ' pDocument As String
  • ' pNotifyName As String
  • ' pDatatype As String
  • ' pPrintProcessor As String
  • ' pParameters As String
  • ' pDriverName As String
  • ' LPDEVMODE pDevMode
  • ' pStatus As String
  • '' PSECURITY_DESCRIPTOR pSecurityDescriptor
  • ' Status As Long
  • ' Priority As String
  • ' Position As String
  • ' StartTime As String
  • ' UntilTime As String
  • ' TotalPages As String
  • ' Size As String
  • ' Submitted As SYSTEMTIME
  • ' Time As Long
  • ' PagesPrinted As Long
  • 'End Type
  • Public Const JOB_STATUS_PAUSED = &H1
  • Public Const JOB_STATUS_ERROR = &H2
  • Public Const JOB_STATUS_DELETING = &H4
  • Public Const JOB_STATUS_SPOOLING = &H8
  • Public Const JOB_STATUS_PRINTING = &H10
  • Public Const JOB_STATUS_OFFLINE = &H20
  • Public Const JOB_STATUS_PAPEROUT = &H40
  • Public Const JOB_STATUS_PRINTED = &H80
  • Public Const JOB_STATUS_USER_INTERVENTION = &H10000
  • Public Const MAX_PRIORITY = 99
  • Public Const MIN_PRIORITY = 1
  • Public Const DEF_PRIORITY = 1
  • Const JOB_CONTROL_PAUSE = 1
  • Const JOB_CONTROL_RESUME = 2
  • Const JOB_CONTROL_CANCEL = 3
  • Const JOB_CONTROL_RESTART = 4
  • Const JOB_CONTROL_DELETE = 5
  • Public Function DisplaySpoolerTask(PrinterName As String) As JOB_INFO_1()
  • Dim Result As Long, Required As Long, BufLen As Long
  • Dim Buffer() As Long, Entries As Long, LiMem, FTime As FILETIME
  • Dim hPrinter As Long, PName As String, l As Long, X As Long, aa As String
  • Dim Job() As JOB_INFO_1
  • Const c As Long = 16
  • BufLen = 1024
  • ReDim Buffer(BufLen \ 4)
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • 'On cherche la taille du buffer
  • Result = EnumJobs(hPrinter, 0, &HFFFFFFFF, 1, Buffer(0), _
  • BufLen, Required, Entries)
  • If Result = 0 Or Required = 0 Then
  • 'une erreur s'est produite
  • Call ClosePrinter(hPrinter)
  • Exit Function
  • Else
  • 'Est-ce que le buffer est assez gros ?
  • If Required > BufLen Then
  • 'Buffer pas assez gros
  • ReDim Buffer(Required \ 4)
  • Result = EnumJobs(hPrinter, 0, &HFFFFFFFF, 1, Buffer(0), _
  • BufLen, Required, Entries)
  • If Result = 0 Then
  • 'Erreur
  • Call ClosePrinter(hPrinter)
  • Exit Function
  • End If
  • End If
  • 'On ferme l'acces au printer
  • Call ClosePrinter(hPrinter)
  • 'on prepare la variable local qui stocke les taches
  • ReDim Job(0 To Entries - 1)
  • For X = 0 To Entries - 1
  • 'JobID: Buffer(0)
  • Job(X).JobId = Buffer(c * X + 0)
  • 'Nom de l'imprimante: Buffer(1) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 1)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 1))
  • aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
  • Job(X).pPrinterName = aa
  • 'Nom de la machine: Buffer(2) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 2)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 2))
  • aa = Trim$(Left$(aa, InStr(aa, Chr$(0)) - 1))
  • Job(X).pMachineName = aa
  • 'Nom de l'utilisateur: Buffer(3) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 3)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 3))
  • aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
  • Job(X).pUserName = aa
  • 'Nom du document: Buffer(4) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 4)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 4))
  • aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
  • Job(X).pDocument = aa
  • 'Type de date: Buffer(5) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 5)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 5))
  • aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
  • Job(X).pDatatype = aa
  • 'Status de la tache: Buffer(6) pointeur vers une chaine
  • aa = Space$(StrLen(Buffer(c * X + 6)) + 1)
  • Call PtrToStr(aa, Buffer(c * X + 6))
  • If InStr(aa, Chr$(0)) <> 0 Then
  • aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
  • Else
  • aa = ""
  • End If
  • Job(X).pStatus = aa
  • 'Parametre Status
  • Job(X).Status = Buffer(c * X + 7)
  • 'Buffer(8) Priority.
  • Job(X).Priority = Buffer(c * X + 8)
  • 'Position de la tache dans la queue
  • Job(X).Position = Buffer(c * X + 9)
  • 'Nombre de page de la tache
  • Job(X).TotalPages = Buffer(c * X + 10)
  • 'Nombre de page déjà imprimée
  • Job(X).PagesPrinted = Buffer(c * X + 11)
  • 'Date de soumission
  • With Job(X).Submitted
  • .wYear = Buffer(c * X + 12) Mod 65536
  • .wMonth = Buffer(c * X + 12) \ 65536
  • .wDayOfWeek = Buffer(c * X + 13) Mod 65536
  • .wDay = Buffer(c * X + 13) \ 65536
  • .wHour = Buffer(c * X + 14) Mod 65536
  • .wMinute = Buffer(c * X + 14) \ 65536
  • .wSecond = Buffer(c * X + 15) Mod 65536
  • .wMilliseconds = Buffer(c * X + 15) \ 65536
  • End With
  • SystemTimeToFileTime Job(X).Submitted, FTime
  • FileTimeToLocalFileTime FTime, FTime
  • FileTimeToSystemTime FTime, Job(X).Submitted
  • Next X
  • End If
  • End If
  • DisplaySpoolerTask = Job
  • Erase Job
  • End Function
  • Public Sub PauseJob(PrinterName As String, Job As JOB_INFO_1)
  • Dim Result As Long, hPrinter As Long
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_PAUSE)
  • Call ClosePrinter(hPrinter)
  • End If
  • End Sub
  • Public Sub ResumeJob(PrinterName As String, Job As JOB_INFO_1)
  • Dim Result As Long, hPrinter As Long
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_RESUME)
  • Call ClosePrinter(hPrinter)
  • End If
  • End Sub
  • Public Sub CancelJob(PrinterName As String, Job As JOB_INFO_1)
  • Dim Result As Long, hPrinter As Long
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_CANCEL)
  • Call ClosePrinter(hPrinter)
  • End If
  • End Sub
  • Public Sub RestartJob(PrinterName As String, Job As JOB_INFO_1)
  • Dim Result As Long, hPrinter As Long
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_RESTART)
  • Call ClosePrinter(hPrinter)
  • End If
  • End Sub
  • Public Sub DeleteJob(PrinterName As String, Job As JOB_INFO_1)
  • Dim Result As Long, hPrinter As Long
  • 'Ouvrir un acces à l'imprimante
  • Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
  • If Result <> 0 Then
  • 'Pas d'erreur
  • Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_DELETE)
  • Call ClosePrinter(hPrinter)
  • End If
  • End Sub
  • Public Function ConvertStatusToString(Flag As Long) As String
  • Dim Temp As String
  • If Flag And JOB_STATUS_PAUSED Then Temp = "Pause "
  • If Flag And JOB_STATUS_ERROR Then Temp = Temp & "Erreur "
  • If Flag And JOB_STATUS_DELETING Then Temp = Temp & "Suppression "
  • If Flag And JOB_STATUS_SPOOLING Then Temp = Temp & "Spool "
  • If Flag And JOB_STATUS_PRINTING Then Temp = Temp & "Impression "
  • If Flag And JOB_STATUS_OFFLINE Then Temp = Temp & "Déconnectée "
  • If Flag And JOB_STATUS_PAPEROUT Then Temp = Temp & "Plus de papier "
  • If Flag And JOB_STATUS_PRINTED Then temp = temp & "Imprimé "
  • If Flag And JOB_STATUS_USER_INTERVENTION Then Temp = Temp & "Intervention"
  • ConvertStatusToString = Trim$(Temp)
  • End Function
Option Explicit

Private Declare Function ClosePrinter Lib "winspool.drv" _
        (ByVal hPrinter As Long) As Long
        
Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
        "OpenPrinterA" (ByVal pPrinterName As String, phPrinter _
        As Long, pDefault As Any) As Long
        
Private Declare Function EnumJobs Lib "winspool.drv" Alias _
        "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob _
        As Long, ByVal NoJobs As Long, ByVal Level As Long, _
        pJob As Long, ByVal cdBuf As Long, pcbNeeded As _
        Long, pcReturned As Long) As Long
        
Private Declare Function SetJob Lib "winspool.drv" Alias _
        "SetJobA" (ByVal hPrinter As Long, ByVal JobId As Long, _
        ByVal Level As Long, ByRef pJob As JOB_INFO_1, ByVal _
        Command As Long) As Long
        
Private Declare Function PtrToStr Lib "kernel32" Alias _
        "lstrcpyA" (ByVal RetVal As String, ByVal Ptr As _
        Long) As Long
         
Private Declare Function StrLen Lib "kernel32" Alias _
        "lstrlenA" (ByVal Ptr As Long) As Long
Declare Function FileTimeToLocalFileTime Lib "kernel32" _
        (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Declare Function SystemTimeToFileTime Lib "kernel32" (lpSystemTime As SYSTEMTIME, lpFileTime As FILETIME) As Long

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
Public Type SYSTEMTIME
  wYear As Integer
  wMonth As Integer
  wDayOfWeek As Integer
  wDay As Integer
  wHour As Integer
  wMinute As Integer
  wSecond As Integer
  wMilliseconds As Integer
End Type

Public Type JOB_INFO_1
  JobId As Long
  pPrinterName As String
  pMachineName As String
  pUserName As String
  pDocument As String
  pDatatype As String
  pStatus As String
  Status As Long
  Priority As Long
  Position As Long
  TotalPages As Long
  PagesPrinted As Long
  Submitted As SYSTEMTIME
End Type
'Public Type JOB_INFO_2
'  JobId As Long
'  pPrinterName As String
'  pMachineName As String
'  pUserName As String
'  pDocument As String
'  pNotifyName As String
'  pDatatype As String
'  pPrintProcessor As String
'  pParameters As String
'  pDriverName As String
'  LPDEVMODE pDevMode
'  pStatus As String
''  PSECURITY_DESCRIPTOR pSecurityDescriptor
'  Status As Long
'  Priority As String
'  Position As String
'  StartTime As String
'  UntilTime As String
'  TotalPages As String
'  Size As String
'  Submitted As SYSTEMTIME
'  Time As Long
'  PagesPrinted As Long
'End Type
Public Const JOB_STATUS_PAUSED = &H1
Public Const JOB_STATUS_ERROR = &H2
Public Const JOB_STATUS_DELETING = &H4
Public Const JOB_STATUS_SPOOLING = &H8
Public Const JOB_STATUS_PRINTING = &H10
Public Const JOB_STATUS_OFFLINE = &H20
Public Const JOB_STATUS_PAPEROUT = &H40
Public Const JOB_STATUS_PRINTED = &H80
Public Const JOB_STATUS_USER_INTERVENTION = &H10000

Public Const MAX_PRIORITY = 99
Public Const MIN_PRIORITY = 1
Public Const DEF_PRIORITY = 1

Const JOB_CONTROL_PAUSE = 1
Const JOB_CONTROL_RESUME = 2
Const JOB_CONTROL_CANCEL = 3
Const JOB_CONTROL_RESTART = 4
Const JOB_CONTROL_DELETE = 5


Public Function DisplaySpoolerTask(PrinterName As String) As JOB_INFO_1()
  Dim Result As Long, Required As Long, BufLen As Long
  Dim Buffer() As Long, Entries As Long, LiMem, FTime As FILETIME
  Dim hPrinter As Long, PName As String, l As Long, X As Long, aa As String
  Dim Job() As JOB_INFO_1
  Const c As Long = 16

    BufLen = 1024
    ReDim Buffer(BufLen \ 4)
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
      'Pas d'erreur
      'On cherche la taille du buffer
      Result = EnumJobs(hPrinter, 0, &HFFFFFFFF, 1, Buffer(0), _
                        BufLen, Required, Entries)
      
      If Result = 0 Or Required = 0 Then
        'une erreur s'est produite
        Call ClosePrinter(hPrinter)
        Exit Function
      Else
        'Est-ce que le buffer est assez gros ?
        If Required > BufLen Then
          'Buffer pas assez gros
          ReDim Buffer(Required \ 4)
          Result = EnumJobs(hPrinter, 0, &HFFFFFFFF, 1, Buffer(0), _
                            BufLen, Required, Entries)
          If Result = 0 Then
            'Erreur
            Call ClosePrinter(hPrinter)
            Exit Function
          End If
        End If
  
        'On ferme l'acces au printer
        Call ClosePrinter(hPrinter)
         
        'on prepare la variable local qui stocke les taches
        ReDim Job(0 To Entries - 1)
        For X = 0 To Entries - 1
        
          'JobID: Buffer(0)
          Job(X).JobId = Buffer(c * X + 0)
          
          'Nom de l'imprimante: Buffer(1) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 1)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 1))
          aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
          Job(X).pPrinterName = aa
          
          'Nom de la machine: Buffer(2) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 2)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 2))
          aa = Trim$(Left$(aa, InStr(aa, Chr$(0)) - 1))
          Job(X).pMachineName = aa
          
          'Nom de l'utilisateur: Buffer(3) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 3)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 3))
          aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
          Job(X).pUserName = aa
  
          'Nom du document: Buffer(4) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 4)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 4))
          aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
          Job(X).pDocument = aa
          
          'Type de date: Buffer(5) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 5)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 5))
          aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
          Job(X).pDatatype = aa
          
          'Status de la tache: Buffer(6) pointeur vers une chaine
          aa = Space$(StrLen(Buffer(c * X + 6)) + 1)
          Call PtrToStr(aa, Buffer(c * X + 6))
          If InStr(aa, Chr$(0)) <> 0 Then
            aa = Left$(aa, InStr(aa, Chr$(0)) - 1)
          Else
            aa = ""
          End If
          Job(X).pStatus = aa
                 
          'Parametre Status
          Job(X).Status = Buffer(c * X + 7)
          
          'Buffer(8) Priority.
          Job(X).Priority = Buffer(c * X + 8)
                   
          'Position de la tache dans la queue
          Job(X).Position = Buffer(c * X + 9)
   
          'Nombre de page de la tache
          Job(X).TotalPages = Buffer(c * X + 10)
         
          'Nombre de page déjà imprimée
          Job(X).PagesPrinted = Buffer(c * X + 11)
         
          'Date de soumission
          With Job(X).Submitted
            .wYear = Buffer(c * X + 12) Mod 65536
            .wMonth = Buffer(c * X + 12) \ 65536
            .wDayOfWeek = Buffer(c * X + 13) Mod 65536
            .wDay = Buffer(c * X + 13) \ 65536
            .wHour = Buffer(c * X + 14) Mod 65536
            .wMinute = Buffer(c * X + 14) \ 65536
            .wSecond = Buffer(c * X + 15) Mod 65536
            .wMilliseconds = Buffer(c * X + 15) \ 65536
          End With
          SystemTimeToFileTime Job(X).Submitted, FTime
          FileTimeToLocalFileTime FTime, FTime
          FileTimeToSystemTime FTime, Job(X).Submitted
        Next X
       End If
    End If
    DisplaySpoolerTask = Job
    Erase Job
End Function

Public Sub PauseJob(PrinterName As String, Job As JOB_INFO_1)
  Dim Result As Long, hPrinter As Long
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
    'Pas d'erreur
      Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_PAUSE)
      Call ClosePrinter(hPrinter)
    End If
End Sub

Public Sub ResumeJob(PrinterName As String, Job As JOB_INFO_1)
  Dim Result As Long, hPrinter As Long
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
    'Pas d'erreur
      Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_RESUME)
      Call ClosePrinter(hPrinter)
    End If
End Sub

Public Sub CancelJob(PrinterName As String, Job As JOB_INFO_1)
  Dim Result As Long, hPrinter As Long
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
    'Pas d'erreur
      Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_CANCEL)
      Call ClosePrinter(hPrinter)
    End If
End Sub

Public Sub RestartJob(PrinterName As String, Job As JOB_INFO_1)
  Dim Result As Long, hPrinter As Long
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
    'Pas d'erreur
      Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_RESTART)
      Call ClosePrinter(hPrinter)
    End If
End Sub

Public Sub DeleteJob(PrinterName As String, Job As JOB_INFO_1)
  Dim Result As Long, hPrinter As Long
    
    'Ouvrir un acces à l'imprimante
    Result = OpenPrinter(ByVal PrinterName, ByVal VarPtr(hPrinter), ByVal 0)
    If Result <> 0 Then
    'Pas d'erreur
      Call SetJob(hPrinter, Job.JobId, 1&, Job, JOB_CONTROL_DELETE)
      Call ClosePrinter(hPrinter)
    End If
End Sub

Public Function ConvertStatusToString(Flag As Long) As String
  Dim Temp As String
    
    If Flag And JOB_STATUS_PAUSED Then Temp = "Pause "
    If Flag And JOB_STATUS_ERROR Then Temp = Temp & "Erreur "
    If Flag And JOB_STATUS_DELETING Then Temp = Temp & "Suppression "
    If Flag And JOB_STATUS_SPOOLING Then Temp = Temp & "Spool "
    If Flag And JOB_STATUS_PRINTING Then Temp = Temp & "Impression "
    If Flag And JOB_STATUS_OFFLINE Then Temp = Temp & "Déconnectée "
    If Flag And JOB_STATUS_PAPEROUT Then Temp = Temp & "Plus de papier "
    If Flag And JOB_STATUS_PRINTED Then temp = temp & "Imprimé "
    If Flag And JOB_STATUS_USER_INTERVENTION Then Temp = Temp & "Intervention"
    ConvertStatusToString = Trim$(Temp)
End Function  

 Conclusion

Marche sous XP au moins (je n'ai pas testé sur 9x/NT/2000)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION...
Source avec Zip Source .NET (Dotnet) DÉFRAGMENTER UN FICHIER
Source avec Zip Source .NET (Dotnet) ECRAN DE VEILLE : DÉTECTER LE LANCEMENT/DÉCLENCHER/EMPÊCHER
Source avec Zip Source .NET (Dotnet) AUTORUN : DÉTECTION DU LANCEMENT DE L'AUTORUN, DÉTECTION DU ...
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) PARAMETRES_IMPRIMANTE par Le Pivert
Source avec Zip Source .NET (Dotnet) IMPRESSION FACILE EN ÉVITANT LES BUGS DU FRAMEWORK par circular
Source avec Zip Source .NET (Dotnet) CLASSE POUR AJOUTER/CONNECTER/DECONNECTER UNE IMPRIMANTE RÉS... par radcur
Source avec Zip Source avec une capture IMPRESSION AU FIL DE L'EAU VERS IMPRIMANTE MATRICIELLE par rimas10
Source avec Zip Source avec une capture IMPRIMER CODE BARE par StetechCove

Commentaires et avis

Commentaire de leoneo le 06/06/2003 15:13:57

Bonjour , je programme sous un autre langage Dark Basic et j'aurai besoin d'une DLL me permettant d'imprimer du texte (en couleur , en italique , en gras ...) et d'imprimer des images (couleur) cette DLL pourrait aussi gérer l'impression . Pourriez vous me créer cette DLL , cela serrai utile à des centaines de personnes , Je vous remercie Beaucoup  @+Léo

Commentaire de none77 le 10/06/2003 15:43:07

Salut ShareVB,
je pense qu'il aurait été de bonne augure de préciser que ce code n'était pas de toi mais d'un site allemand.
Je ne cherche pas la guerre, loin de ca, mais je pense que l'honneteter a du bon. Dans un sens, tu ne dis pas non plus que c'est toi ki la fait !  ;o) donc t'es pas malhonnete non plus...

Mais c'est super sympa d'avoir traduit ce code car super pratique !
Et merci aussi de m'avoir filé l'adresse la dernière fois ;o)
Ciao,
None

Commentaire de alainisfce le 09/09/2003 07:42:16

Bonjour,

Grace a vous j'ai enfin trouvez un début de piste pour mon problèmes.
j'ai besoin de récupérer toutes les données  des travaux avec comme status "imprimé".
mon spooleur d'impression est configurer pour garder les travaux une fois l'impréssion terminée. En regardant avec le gestionnaire d'impression je les voie les ses travaux mais pas via votre outil??

pourriez vous m'aider?

Commentaire de ShareVB le 09/09/2003 20:29:06

Salut,

je viens de mettre à jour la source : il manquait l'affichage du Status "imprimé" dans la colonne status...
si les taches dejà imprimées n'apparaissent pas cela peut etre dû à un manque d'autorisation (sous NT/2000/XP) pour l'acces au taches d'impression d'un compte ou alors un probleme de spooler

personellement chez moi l'affichage des documents déjà imprimés fonctionne (au moins avant un redémarrage)... avec les droits d'administrateur...

Commentaire de helefkaem le 09/10/2003 15:28:33

Comment faire pour récupérer le nombre de page réellement imprimées par WORD en multicopie (le spooleur annonce uniquement le nombre de page pour 1 exemplaire mais pas le nombre d'exemplaire)

Commentaire de rhalley le 14/06/2004 18:42:48

Bonjour,
j'ai lu avec attention le code, il manque juste une chose :
je voudrais faire le lien entre le nom du fichier à imprimer toto.doc par exemple et le fichier .spl qui se trouve dans le spool.
Comment puis je faire, je ne trouve pas la valeur dans le buffer et on ne peut pas lire via VB6 le fichier .spl.
La string retournée est imbittable pour le comparateur de string de VB6.
Merci de me donner la réponse si il y en a une.

RHalley

Commentaire de fred3 le 16/06/2004 17:13:18

Super ce code, le seule problème , c'est que je developpe en vba et que je n'arrive pas a faire appel au fonctions deleteJob... car il bug sur le passage de paramètre du "job", il me dit type incompatible, est-ce que quelqu'un peut m'aider ?

Call DeleteJob(pNomImprimante, Job)

Merci

Commentaire de DARKSIDIOUS le 12/01/2005 19:54:07 administrateur CS

Excellent cette source, ca m'enlève une épine du pied, merci beaucoup !

10/10

DarK Sidious

Commentaire de sdfred le 08/08/2008 09:55:02

SAlut, je ne connais pas trop VBA.
Je me demandais si par hasard tu savais si on pouvais via le Winspool driver configurer l'imprimante?
J'utilise la fonction shellexecute pour imprimer des pdfs
J'aimerais via VBA configurer l'impression de ces pdfs automatiquement (A3/A4, recto ou RectoVErso, Nb de copies).
Cependant la configuration est propre à chaque imprimante, je me demande donc si c'est possible...
En te remerciant par avance.
Frédéric

Commentaire de ShareVB le 08/08/2008 20:41:53

salut,

je pense que tu peux utiliser directement les modules .bas de VB6 dans un projet VBA. Cependant, certaines de ces apis peuvent nécessité des droits un peu plus important que simple utilisateur donc à voir s'il n'y a pas de "accès refusé".

ShareVB

Commentaire de derinhger le 20/04/2009 11:55:35 10/10

bonjour, pourrais tu fournir la version "compilé", car je n'est a ma disposition que le runtime de vb6.

Merci d'avance Derin

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,747 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales