Porta da impressora

Delphi

15/02/2006

Olá, bom dia a todos...

Gostaria de saber como pegar a porta de uma impressora instalada.

Sei q para listar as impressoras instaladas faço o seguinte:
  ListBox1.Items := Printer.Printers;


E para pegar a porta de cada uma??

Agradeço a ajuda de todos.

Abraços


Aloizio Castro

Aloizio Castro

Curtidas 0

Respostas

Massuda

Massuda

15/02/2006

Talvez [url=http://forum.clubedelphi.net/viewtopic.php?t=62545]este tópico[/url] seja útil para você.


GOSTEI 0
Leonardobhbr

Leonardobhbr

15/02/2006

esse codigo realmente é quase perfeito ele só nao pega as impressoras de etiquetas


GOSTEI 0
Aloizio Castro

Aloizio Castro

15/02/2006

Massuda, gostei muito do codigo, estava penando aki com um outro achado neste mesmo fórum....
Tive soh um problema....

Eu usava o seguinte codigo
function TFMainView.GetPortToPrint(Prntr: TPrinter; Index: Integer): String;
begin
  if Pos(´LPT´, printer.Printers.Strings[Index]) > 0 Then
    Result := ´LPT1´
  else if Pos(´\\´, printer.Printers.Strings[Index]) > 0 Then
    Result := Copy(printer.Printers.Strings[Index],
     Pos(´\\´, printer.Printers.Strings[Index]),
     length(printer.Printers.Strings[Index]) -
     Pos(´\\´, printer.Printers.Strings[Index]) + 1);
end;


E isto me retornava perfeitamente o caminho das impressoras de rede ([i:374c6d922d]como exemplo ´\\servidor\lx-300´[/i:374c6d922d]).

Mas isto acontecia pq eu pegava o nome da impressora atraves do metodo:
  Printer.Printers.Strings[Index]


e isto me retornava somente o nome [b:374c6d922d]\\Servido\LX-300[/b:374c6d922d].

Agora com as funçoes indicadas, eu recebo o retorno [b:374c6d922d]\\Servido\LX-300 on LPT1[/b:374c6d922d].

Sei q posso dar prioridade a verificar primeiro se existe [b:374c6d922d]\\[/b:374c6d922d] no nome da impressora para verificar se ela estah na rede, e caso o contrario, eu verifico o q vem apos a string [b:374c6d922d]on[/b:374c6d922d].

Bem acho q isto resolverá o meu problema, mas gostaria de ter uma ultima opniao sua Massuda.

Seria possivel???

Desde jah sou muito grato...

Abraços


GOSTEI 0
Massuda

Massuda

15/02/2006

if Pos(´LPT´, printer.Printers.Strings[Index]) > 0 Then
Acho que no Win NT/2K/XP o nome da impressora não vem com o nome da porta (esse é o motivo do tópico que indiquei no post anterir)... acho que seu código falharia nesse caso.

Sei q posso dar prioridade a verificar primeiro se existe [b:cd2254aba2]\\[/b:cd2254aba2] no nome da impressora para verificar se ela estah na rede, e caso o contrario, eu verifico o q vem apos a string [b:cd2254aba2]on[/b:cd2254aba2].
Se eu entendi direito, isso deve resolver.


GOSTEI 0
Aloizio Castro

Aloizio Castro

15/02/2006

Vlw pela força, vou implementar meu codigo....

Vou dar o assunto por encerrado e agradecer a atenção recebida...


Qq problema, poh deixar q eu grito (^.^)

Abraços


GOSTEI 0
POSTAR