Hello.
I did create these few functions several months ago. I post here, if it can interest someone.
These functions based on WMI queries allow you to manage printers : add / delete printer, driver, port, or obtain configuration, set default printer ... I let you discover it with the code.
Here is the list of the available functions :
_PrintMgr_AddLocalPort
_PrintMgr_AddLPRPort
_PrintMgr_AddPrinter
_PrintMgr_AddPrinterDriver
_PrintMgr_AddTCPIPPrinterPort
_PrintMgr_AddWindowsPrinterConnection
_PrintMgr_CancelAllJobs
_PrintMgr_CancelPrintJob
_PrintMgr_EnumPorts
_PrintMgr_EnumPrinter
_PrintMgr_EnumPrinterConfiguration
_PrintMgr_EnumPrinterDriver
_PrintMgr_EnumPrinterProperties
_PrintMgr_EnumPrintJobs
_PrintMgr_EnumTCPIPPrinterPort
_PrintMgr_Pause
_PrintMgr_PortExists
_PrintMgr_PrinterExists
_PrintMgr_PrinterSetComment
_PrintMgr_PrinterSetDriver
_PrintMgr_PrinterSetPort
_PrintMgr_PrinterShare
_PrintMgr_PrintTestPage
_PrintMgr_RemoveLocalPort
_PrintMgr_RemoveLPRPort
_PrintMgr_RemovePrinter
_PrintMgr_RemovePrinterDriver
_PrintMgr_RemoveTCPIPPrinterPort
_PrintMgr_RenamePrinter
_PrintMgr_Resume
_PrintMgr_SetDefaultPrinter
And some examples :
#include <Array.au3>
#include "PrintMgr.au3"
_Example()
Func _Example()
; Remove a printer called "My old Lexmark printer" :
_PrintMgr_RemovePrinter("My old Lexmark printer")
; Remove the driver called "Lexmark T640" :
_PrintMgr_RemovePrinterDriver("Lexmark T640")
; Remove the TCP/IP printer port called "TCP/IP"
_PrintMgr_RemoveTCPIPPrinterPort("MyOLDPrinterPort")
; Add a driver, called "Samsung ML-451x 501x Series", and driver inf file is ".\Samsung5010\sse2m.inf"
_PrintMgr_AddPrinterDriver("Samsung ML-451x 501x Series", "Windows NT x86", @ScriptDir & "\Samsung5010", @ScriptDir & "\Samsung5010\sse2m.inf")
; Add a TCP/IP printer port, called "MyTCPIPPrinterPort", with IPAddress = 192.168.1.10 and Port = 9100
_PrintMgr_AddTCPIPPrinterPort("MyTCPIPPrinterPort", "192.168.1.10", 9100)
; Add a printer, give it the name "My Printer", use the driver called "Samsung ML-451x 501x Series" and the port called "MyTCPIPPrinterPort"
_PrintMgr_AddPrinter("My Printer", "Samsung ML-451x 501x Series", "MyTCPIPPrinterPort")
; Set the printer called "My Printer" as default printer
_PrintMgr_SetDefaultPrinter("My Printer")
; Connect to the shared printer "\\192.168.1.1\HPDeskjetColor")
_PrintMgr_AddWindowsPrinterConnection("\\192.168.1.1\HPDeskjetColor")
; List all installed printers
Local $aPrinterList = _PrintMgr_EnumPrinter()
_ArrayDisplay($aPrinterList)
; List all printers configuration
Local $aPrinterConfig = _PrintMgr_EnumPrinterConfiguration()
_ArrayDisplay($aPrinterConfig)
; List all installed printer drivers
Local $aDriverList = _PrintMgr_EnumPrinterDriver()
_ArrayDisplay($aDriverList)
; Retrieve the printer configuration for the printer called "Lexmark T640"
$aPrinterConfig = _PrintMgr_EnumPrinterConfiguration("Lexmark T640")
_ArrayDisplay($aPrinterConfig)
; Add a local printer port (for a file output)
_PrintMgr_AddLocalPort("c:\temp\output.pcl")
; Remove the local port
_PrintMgr_RemoveLocalPort("c:\temp\output.pcl")
; Enum a print job
Local $aJobList = _PrintMgr_EnumPrintJobs()
_ArrayDisplay($aJobList)
EndFunc ;==>_Example
Download link :
PrintMgr_Example.au3
PrintMgr.au3