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:
Muito bom esta função mas para funcionar precisa declarar "WinSpool" na uses da Unit.
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