Module Module1
Public Declare Auto Function OpenPrinter Lib "winspool.drv" _
(ByVal pPrinterName As String, _
ByRef phPrinter As IntPtr, _
ByVal pDefault As PrinterDefaults) As Int32
Public Declare Function DeletePrinter Lib "winspool.drv" _
(ByVal hPrinter As IntPtr) As Int32
Public Declare Function ClosePrinter Lib "winspool.drv" _
(ByVal hPrinter As IntPtr) As Int32
Private Declare Function AddPrinter Lib "winspool.drv" _
Alias "AddPrinterA" _
(ByVal pServerName As String, _
ByVal Level As Int32, _
ByVal pPrinter As PRINTER_INFO_2) As Int32
Structure PRINTER_INFO_2
Public pServerName As String
Public pPrinterName As String
Public pShareName As String
Public pPortName As String
Public pDriverName As String
Public pComment As String
Public pLocation As String
Public pDevMode As Int32 'DEVMODE
Public pSepFile As String
Public pPrintProcessor As String
Public pDatatype As String
Public pParameters As String
Public pSecurityDescriptor As Int32 'SECURITY_DESCRIPTOR
Public Attributes As Int32
Public Priority As Int32
Public DefaultPriority As Int32
Public StartTime As Int32
Public UntilTime As Int32
Public Status As Int32
Public cJobs As Int32
Public AveragePPM As Int32
End Structure
Structure PrinterDefaults
Public pDataType As String
Public pDevMode As Int32
Public permissions As Int32
End Structure
Public Const PRINTER_ACCESS_ADMINISTER As Int32 = &H4
Public Const STANDARD_RIGHTS_REQUIRED As Int32 = &HF0000
Public Const PRINTER_ACCESS_USE As Int32 = &H8
Public Const PRINTER_ALL_ACCESS As Int32 = _
STANDARD_RIGHTS_REQUIRED Or _
PRINTER_ACCESS_USE Or _
PRINTER_ACCESS_ADMINISTER
Sub RemovePrinter(ByVal PrinterName As String)
Dim hPrinter As IntPtr
Dim PrinterDefs As New PrinterDefaults
Dim rtn As Int32
PrinterDefs.permissions = PRINTER_ALL_ACCESS
rtn = OpenPrinter(PrinterName, hPrinter, PrinterDefs)
rtn = DeletePrinter(hPrinter)
rtn = ClosePrinter(hPrinter)
End Sub
Sub addprinter1(ByVal PrinterName As String)
Dim pi2 As PRINTER_INFO_2
With pi2
.pPrinterName = PrinterName
.pPortName = "RPT2:"
.pDriverName = "Apple LaserWriter 12/640 PS"
.pPrintProcessor = "WinPrint" '?
End With
Dim rtn As Int32
rtn = AddPrinter("", 2, pi2)
End Sub
Sub Main()
'addprinter1("test1")
RemovePrinter("test")
End Sub