![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetPrinter - получение имени порта принтера
olookin © (2003-07-19 20:05:00)Помогите воспользоваться GetPrinter. У меня работает вызов этой функции, и значение возвращается правильное, но при этом генерит Access violation.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
( "EPSON EPL-5900L Advanced",h,0)Помогите воспользоваться GetPrinter. У меня работает вызов этой функции, и значение возвращается правильное, но при этом генерит Access violation.
Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
x,d: dword;
begin
d:=0;
if OpenPrinter("EPSON EPL-5900L Advanced",h,0) then begin
if not GetPrinter(h,5,0,0,@d) then begin x:=d;
if not GetPrinter(h,5,@pf,x,@d) then showmessage("itsnogood") else
showmessage(pf.pPortName);
end;
при выходе из процедуры генерит ошибку
Буду признателен за помощь....
И еще - просьба TPrinter.GetPrinter не предлагать - там не возвращается имя порта - сам проверял (на D5).
olookin (2003-07-21 10:17:00) [1]
to Alex Konshin - такая же история, возвращает имя принтера но не возвращает имя порта. Похоже причина в том, что я использую Win2000. Как говорит Marser - у него в Win98 все нормально работает.
Alex Konshin (2003-07-20 22:38:00) [2]
Я же говорю, посмотри внимательнее
PortName := THackPrinterDevice(oPrinter.Printers.Objects[idx]).FPort;
Marser (2003-07-20 21:52:00) [3]
> olookin © (20.07.03 13:58)
> to Marser - и еще - у меня 5-я дельфа....
У меня тоже, а свои примеры я предварительно тестирую. Видимо, что-то не то в системе... А что за принтер?
> Alex Konshin © (20.07.03 12:58)
> А выдирать и не надо, смотри мой код.
Посмотрю обязательно.
olookin (2003-07-20 13:58:00) [4]
to Marser - и еще - у меня 5-я дельфа....
olookin (2003-07-20 13:57:00) [5]
to Alex Konshin - мне именно имя порта через полученный хэндл принтера. Хэндл получать я и сам могу...
olookin (2003-07-20 13:56:00) [6]
to Marser - или у меня что-то в системе или в дельфях не то, или ты ошибся... Прямо твой код использую и получаю ТОЛЬКО имена принтеров, а портов и в помине нет....
Alex Konshin (2003-07-20 12:58:00) [7]
А выдирать и не надо, смотри мой код.
Marser (2003-07-20 10:00:00) [8]
> olookin © (20.07.03 03:34)
Вот именно Tp.printers[n] и выдает(хелп читать надо). А выдрать несложно - было бы желание. Вот модифицированный код:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
I,p:byte;
begin
tp:=printer;
for I:=0 to tp.printers.count-1 do
begin
memo1.lines.add(tp.printers[i]);
P:=pos(" on ",tp.printers[i]);
listbox1.items.add(copy(tp.printers[i],p+4,length(tp.printers[i])-(p-4)));
end;
end;
Alex Konshin (2003-07-20 08:46:00) [9]
Зачем тебе нужно знать имя порта?
Это тебе случайно не для того, чтобы получить handle принтера?
Вот посмотри сюда:
http://home.earthlink.net/~akonshin/files/PrintLib.pas
Это мое добавление для юнита Printers. Хак, но до сих пор работает на ура.
Посмотри внимательнее, там все, что тебе нужно есть.
olookin (2003-07-20 03:38:00) [10]
И еще - предположим вы правы...... Так мне что - выцеплять строку с именем порта принтера отдельно? Не глупо ли это? Т.е. выдирать из "Printer Lalala Lpt:11111" и мне значит надо имя порта из строки выдирать?
olookin (2003-07-20 03:34:00) [11]
to Marser - а ты поясни что имеено у тебя выдает строку:
EPSON Stylus COLOR 680 on LPT1:
Что? tp.printers[i] что ли?
Marser (2003-07-20 00:00:00) [12]Значит, с TPrinter не сложилось? Зря, хелп читать нужно, это развивает. Как сделал бы я:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
( tp.printers[i])Значит, с TPrinter не сложилось? Зря, хелп читать нужно, это развивает. Как сделал бы я:
procedure TForm1.FormCreate(Sender: TObject);
var tp:tprinter;
I:byte;
begin
tp:=printer;
for I:=0 to tp.printers.count-1 do
memo1.lines.add(tp.printers[i])
end;
У меня выдает:
EPSON Stylus COLOR 680 on LPT1:
И никаких ошибок
P.S. А что такое PRINTER_INFO_5? Предупредил бы хоть о левых компонентах...
olookin (2003-07-19 20:35:00) [13]
Пожалуйста помогите....