Конференция "Основная" » Где принтер по умолчанию в реестре?
 
  • БарЛог © (12.02.08 12:04) [0]
    Всем привет. Сабж.
    Яндекс не помогает :( Поиск по реестру тоже.

    ВинХР.
  • SergeR © (12.02.08 12:46) [1]
    А его нету в реестре, на сколько я знаю...
  • БарЛог © (12.02.08 13:03) [2]
    Поиск в реестре по имени принтера выдал большую тучу результатов...

    ...тогда где?
  • БарЛог © (12.02.08 13:03) [3]
    > ...тогда где?
    в смысле, как его программно получить/поменять?
  • SergeR © (12.02.08 13:05) [4]
    uses Printers...
  • Ник (12.02.08 13:11) [5]
    Все в DRKB.chm

    uses
    Printers, Messages;
    function GetDefaultPrinter: string;

    var
    ResStr: array[0..255] of Char;
    begin
    GetProfileString('Windows', 'device', '', ResStr, 255);
    Result := StrPas(ResStr);
    end;

    procedure SetDefaultPrinter1(NewDefPrinter: string);
    var
    ResStr: array[0..255] of Char;

    begin
    StrPCopy(ResStr, NewdefPrinter);
    WriteProfileString('windows', 'device', ResStr);
    StrCopy(ResStr, 'windows');
    SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, Longint(@ResStr));
    end;

    procedure SetDefaultPrinter2(PrinterName: string);
    var
    I: 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;
    try
      for I := 0 to Printer.Printers.Count - 1 do
      begin
        if Printer.Printers = 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;
    finally
      aPrinter.Free;
    end;
    FreeMem(Device, 255);
    FreeMem(Driver, 255);
    FreeMem(Port, 255);
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    label1.Caption := GetDefaultPrinter2;
    end;

    //Fill the combobox with all available printers
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Combobox1.Items.Clear;
    Combobox1.Items.AddStrings(Printer.Printers);
    end;

    //Set the selected printer in the combobox as default printer
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    SetDefaultPrinter(Combobox1.Text);
    end;

  • БарЛог © (12.02.08 13:30) [6]
    Спасибо.
  • VICTOR_ (12.02.08 14:21) [7]
 
Конференция "Основная" » Где принтер по умолчанию в реестре?
Есть новые Нет новых   [134482   +35][b:0][p:0.002]