15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Как узнать, какие принтеры установлены в системе.

Компилятор: Delphi

Способ 1 - через реестр:

Поместите на форму кнопку (Button1) и ListBox (ListBox1). В uses добавьте registry unit. Следующий код поместите в событие кнопки OnClick:

procedure TForm1.Button1Click(Sender: TObject);
var
    m: TRegistry;
    i: integer;
    l: TstringList;
    s: string;
begin
    m := TRegistry.Create; l := TStringList.Create;
    s := '\System\CurrentControlSet\Control\Print\Printers';
    m.RootKey := HKEY_LOCAL_MACHINE;
    m.OpenKey(s,false);
    m.GetKeyNames(l);       // получаем список принтеров
    m.CloseKey;
    ListBox1.Items.Clear;
    for i := 0 to l.Count - 1 do begin                     
        m.OpenKey(s + '\' + l[i], false);
        // Здесь, ради теста, можно сделать проверку на наличие нужного имени драйвера
        // if m.ReadString('Printer Driver') = 'my printer driver' then ..
        // добавляем имя принтера в список
        ListBox1.Items.Add(m.ReadString('Name'));
        m.CloseKey;
    end;
    m.Free;
    l.Free;
end;

Способ 2 - через объект printer:

// uses printers
procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
begin
  ListBox1.Items.Clear;
  for i := 0 to Printer.Printers.Count-1 do
      ListBox1.items.Add(Printer.Printers.Strings[i]);
end;