Que tal
Les comparto la solución para cambiar el nombre de una impresora que no encontraba la información en internet y gracias al grupo de WhatsApp Delphi en Español (
https://chat.whatsapp.com/KZkM9d8k8gQ8u30a085y6k) donde nuestro bien conocido amigo Juan Antonio Castillo (
https://jachguate.wordpress.com/) me apoyó a encontrar la forma de hacerlo.
Código Delphi
[-]
uses
System.Variants, System.SysUtils, Winapi.ActiveX, System.Win.ComObj, WinSpool, Windows;
function RenombrarImpresora(ANombreActual, ANombreNuevo : string) : boolean;
var
lHandle : THandle;
lpPrinterInfo : PPrinterInfo2;
lPrinterDefault : TPrinterDefaults;
lSize : DWORD;
begin
Result := False;
lPrinterDefault.pDatatype := nil;
lPrinterDefault.pDevMode := nil;
lPrinterDefault.DesiredAccess := PRINTER_ALL_ACCESS;
if OpenPrinter(PChar(ANombreActual), lHandle, @lPrinterDefault) then
begin
try
lSize := 0;
GetPrinter(lHandle, 2, nil, lSize, @lSize);
lpPrinterInfo := AllocMem(lSize);
try
if not GetPrinter(lHandle, 2, lpPrinterInfo, lSize, @lSize) then
RaiseLastOSError;
lpPrinterInfo.pPrinterName := PChar(ANombreNuevo);
if not SetPrinter(lHandle, 2, lpPrinterInfo, 0) then
RaiseLastOSError;
finally
FreeMem(lpPrinterInfo);
end;
Result := true;
finally
ClosePrinter(lHandle);
end;
end
else
RaiseLastOSError;
end;
Saludos
Bismarck