Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6

/ вопрос решён /

Уважаемые эксперты! Подскажите, пожалуйста, как узнать, установлен ли в системе хотя бы один принтер? Заранее благодарю за ответ.

Sunshine Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: Sunshine (статус: Посетитель)
Вопрос отправлен: 11 мая 2006, 15:39
Состояние вопроса: решён, ответов: 3.

Ответ #1. Отвечает эксперт: bruder

Есть много способов. Вот один из них - с помощью реестра. Кинь на форму кнопку и memo. В событие кнопки OnClick пиши код приложенный к ответу.

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. m: TRegistry;
  4. i: integer;
  5. l: TstringList;
  6. s: string;
  7. begin
  8. m := TRegistry.Create; l := TStringList.Create;
  9. s := 'SystemCurrentControlSetControlPrintPrinters';
  10. m.RootKey := HKEY_LOCAL_MACHINE;
  11. m.OpenKey(s, false);
  12.  
  13. m.CloseKey;
  14. Memo1.Lines.Clear;
  15. for i := 0 to l.Count - 1 do begin
  16. m.OpenKey(s + '' + l[i], false);
  17.  
  18. // if m.ReadString('Printer Driver') = 'my printer driver' then ..
  19.  
  20. Memo1.Lines.Add(m.ReadString('Name'));
  21. m.CloseKey;
  22. end;
  23. m.Free;
  24. l.Free;
  25. end;


Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 11 мая 2006, 17:49
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: DNK

Самое простое что приходит в голову подключить к проекту модуль Printers. После этого программе станет доступно свойство Printer.Printers:TStrings - список установленных в системе принтеров.

Ответ отправил: DNK (статус: Студент)
Время отправки: 13 мая 2006, 00:56
Оценка за ответ: 5

Комментарий к оценке: Коротко и удобно!

Ответ #3. Отвечает эксперт: West

Мне известно два способа, один из них осветил bruder, второй:

Приложение:
  1. // uses printers
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. var
  4. i : integer;
  5. begin
  6. ListBox1.Items.Clear;
  7. for i := 0 to Printer.Printers.Count-1 do
  8. ListBox1.items.Add(Printer.Printers.Strings[i]);
  9. end;


Ответ отправил: West (статус: 1-ый класс)
Время отправки: 14 мая 2006, 00:03
Оценка за ответ: 3

Комментарий к оценке: Во-первых, вы повторили ответ Ершова Дениса; во-вторых, перебор значений Printers делать не нужно - это ведь уже TStrings.

Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 19:56: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.