Porta da impressora
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:
E para pegar a porta de cada uma??
Agradeço a ajuda de todos.
Abraços
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
Curtidas 0
Respostas
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
15/02/2006
esse codigo realmente é quase perfeito ele só nao pega as impressoras de etiquetas
GOSTEI 0
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
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:
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
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
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
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
Vou dar o assunto por encerrado e agradecer a atenção recebida...
Qq problema, poh deixar q eu grito (^.^)
Abraços
GOSTEI 0