Как установить принтер по умолчанию

Тема в разделе "Delphi", создана пользователем WinHack, 27 ноя 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;