VB Code:
  1. Option Explicit
  2.  
  3. Private Type PRINTER_DEFAULTS
  4.   pDatatype As String
  5.   pDevMode As Long
  6.   DesiredAccess As Long
  7. End Type
  8.  
  9. Private Declare Function OpenPrinter Lib "winspool.drv" _
  10.         Alias "OpenPrinterA" (ByVal pPrinterName As String, _
  11.         phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
  12.  
  13. Private Declare Function ClosePrinter Lib "winspool.drv" _
  14.         (ByVal hPrinter As Long) As Long
  15.  
  16. Public Enum PrinterAccessRights
  17.      PRINTER_ACCESS_ADMINISTER = &H4
  18.      PRINTER_ACCESS_USE = &H8
  19.      PRINTER_ALL_ACCESS = &HF000C
  20. End Enum
  21.  
  22. Private Declare Function SetJob Lib "winspool.drv" Alias _
  23.                      "SetJobA" (ByVal hPrinter As Long, _
  24.                                 ByVal JobId As Long, _
  25.                                 ByVal Level As Long, _
  26.                                 pJob As Long, _
  27.                                 ByVal Command As Long) As Long
  28.                                
  29.                                
  30.  
  31. Public Enum PrintJobControlCommands
  32.      JOB_CONTROL_PAUSE = 1
  33.      JOB_CONTROL_RESUME = 2
  34.      JOB_CONTROL_CANCEL = 3
  35.      JOB_CONTROL_RESTART = 4
  36.      JOB_CONTROL_DELETE = 5
  37.      JOB_CONTROL_SENT_TO_PRINTER = 6
  38.      JOB_CONTROL_LAST_PAGE_EJECTED = 7
  39. End Enum
  40.  
  41. Public Sub KillPrintJob(ByVal PrinterDeviceName As String, ByVal idJob As Long)
  42.  
  43. Dim lRet As Long
  44. Dim mhPrinter As Long
  45. Dim paAll As PRINTER_DEFAULTS
  46.    
  47.     paAll.DesiredAccess = PRINTER_ALL_ACCESS
  48.     Call OpenPrinter(PrinterDeviceName, mhPrinter, paAll)
  49.     If mhPrinter <> 0 Then
  50.         lRet = SetJob(mhPrinter, idJob, 0, 0, JOB_CONTROL_DELETE)
  51.         Call ClosePrinter(mhPrinter)
  52.     End If
  53. End Sub