Установка принтера по умолчанию из кода Delphi

Тема в разделе "Delphi", создана пользователем WinHack, 28 ноя 2016.

  1. WinHack
    Если Вам нужно использовать другой принтер по умолчанию и Вам нужно изменить это программно, ниже приводится пример кода, как можно это реализовать:

    Код:
    procedure SetDefaultPrinter(PrinterName: String) ;
     var
         j: Integer;
         Device : PChar;
         Driver : Pchar;
         Port : Pchar;
         HdeviceMode: Thandle;
         aPrinter : TPrinter;
     begin
        Printer.PrinterIndex := -1;
        getmem(Device, 255) ;
        getmem(Driver, 255) ;
        getmem(Port, 255) ;
        aPrinter := TPrinter.create;
        for j := 0 to Printer.printers.Count-1 do
        begin
          if Printer.printers[j] = PrinterName then
          begin
            aprinter.printerindex := i;
            aPrinter.getprinter
     (device, driver, port, HdeviceMode) ;
            StrCat(Device, ',') ;
            StrCat(Device, Driver ) ;
            StrCat(Device, Port ) ;
            WriteProfileString('windows', 'device', Device) ;
            StrCopy( Device, 'windows' ) ;
            SendMessage(HWND_BROADCAST, WM_WININICHANGE,
     0, Longint(@Device)) ;
         end;
        end;
        Freemem(Device, 255) ;
        Freemem(Driver, 255) ;
        Freemem(Port, 255) ;
        aPrinter.Free;
     end;