Чтобы программно добавить принтер, необходимо воспользоваться API функцией AddPrinter, которая имеет три параметра:
Следующий пример является надстройкой для этой функции. Для этого необходимо знать Имя принтера, которое будет отображаться в Проводнике, имя порта, к которому подключён принтер (т.е. LPT1:), имя драйвера (прийдётся посмотреть вручную) и имя процессора печати (который обычно "winprint").
unitunit_AddPrinter; interface
function
AddAPrinter(PrinterName, PortName, DriverName, PrintProcessor: string
): boolean; implementation
uses
SysUtils, WinSpool, Windows; function
AddAPrinter(PrinterName, PortName, DriverName, PrintProcessor: string
): boolean; var
pName: PChar; Level: DWORD; pPrinter: PPrinterInfo2; begin
pName := nil
; Level := 2; New(pPrinter); pPrinter^.pServerName := nil
; pPrinter^.pShareName := nil
; pPrinter^.pComment := nil
; pPrinter^.pLocation := nil
; pPrinter^.pDevMode := nil
; pPrinter^.pSepFile := nil
; pPrinter^.pDatatype := nil
; pPrinter^.pParameters := nil
; pPrinter^.pSecurityDescriptor := nil
; pPrinter^.Attributes := 0; pPrinter^.Priority := 0; pPrinter^.DefaultPriority := 0; pPrinter^.StartTime := 0; pPrinter^.UntilTime := 0; pPrinter^.Status := 0; pPrinter^.cJobs := 0; pPrinter^.AveragePPM :=0; pPrinter^.pPrinterName := PCHAR(PrinterName); pPrinter^.pPortName := PCHAR(PortName); pPrinter^.pDriverName := PCHAR(DriverName); pPrinter^.pPrintProcessor := PCHAR(PrintProcessor); if
AddPrinter(pName, Level, pPrinter) <> 0 then
Result := true
else
begin
// ShowMessage(inttostr(GetlastError)); Result := false
; end
; end
; end
.