Quarta-feira, Fevereiro 23, 2005

Obtendo as portas conectadas às impressoras do sistema

Um leitor perguntou uma maneira de se obter as portas conectadas às impressoras do computador. Uma maneira de fazer isso é usar a função EnumPrinters, que enumera as impressoras e preenche estruturas com informações das impressoras.
Esta função lista as portas disponíveis no sistema:


procedure TForm4.FormCreate(Sender: TObject);
var
i : Integer;
Flags, Count, NumInfo: DWORD;
Buffer : String;
PrinterInfo : PChar;
begin
Flags := PRINTER_ENUM_CONNECTIONS or PRINTER_ENUM_LOCAL;
EnumPrinters(Flags, nil, 5, nil, 0, Count, NumInfo);
if Count = 0 then
Exit;
SetLength(Buffer, Count);
if not EnumPrinters(Flags, nil, 5, PByte(Buffer), Count, Count, NumInfo) then
Exit;
PrinterInfo := PChar(Buffer);
for i := 0 to NumInfo - 1 do begin
with PPrinterInfo5(PrinterInfo)^ do
Listbox1.Items.Add(String(pPortName));
Inc(PrinterInfo,Sizeof(TPrinterInfo5));
end;
end;

2 Comentários:

At 1:15 PM, Felipe Puttini Schroeder disse...

Muito bom esta função mas para funcionar precisa declarar "WinSpool" na uses da Unit.

 
At 8:49 PM, ari rodrigues disse...

bruno... excelente!!!
adaptei seu codigo para selecionar 3 impressoras(balcao-estoque-despacho)cada uma em setor diferente, tanto rede quanto local, porem usando combobox. assim quando uma printer da pau ou falta tinta é só indicar outra.
seu nome constara em minha lista de colaboradores.
excelsior!!!
ari

 

Postar um comentário

<< Home