Componer un array con los puertos de impresora instaladas

Componer un array con los puertos de impresora instaladas

Postby Loren » Wed Oct 07, 2015 11:12 am

Compañeros,

necesito hacer un array con los puertos de las impresoras que tenga instalada, o al menos obtener el puerto de una impresa en concreto.

Con PrnGetPort() obtengo el puerto de la impresora predeterminada, pero ¿Como obtengo de una en concreto?

Probé con msginfo(PrnGetPort(cimpresora)), pero por defecto siempre me muestra el puerto de la impresora predeterminada.

¿Alguna alma caritativa?

Gracias.
Lorenzo.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Componer un array con los puertos de impresora instaladas

Postby Loren » Thu Oct 08, 2015 7:19 am

¿?
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Componer un array con los puertos de impresora instaladas

Postby Antonio Linares » Thu Oct 08, 2015 8:38 am

Has probado a seleccionar la que te interesa y luego llamar a PrnGetPort() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Componer un array con los puertos de impresora instaladas

Postby karinha » Thu Oct 08, 2015 2:14 pm

Mira se ayuda:

Code: Select all  Expand view

Function STATUS_DA_IMPRESSORA()

   aArray := GetPrinters( .T. )

   If Empty( aArray )

      Alert( "Nenhuma impressora Instalada", "Atencao" )

      Return Nil

   Endif

   for i = 1 to len(aArray)

      cPrinterName := substr( aArray[i], 1, at( ",", aArray[i])-1 )

      MsgInfo( ( "A Impressora " + cPrinterName )+CRLF+ ;
                                                 +CRLF+ ;
               IsPrint( alltrim( cPrinterName ) ),      ;
               OemToAnsi( "Aten‡Æo Usu rio" ) )

   next

Return nil

Function GetPrinters()

   Local aPrinter := {}
   Local cAllEntries
   Local cEntry
   Local nStart
   Local cName
   Local cPrn
   Local cPort
   Local nJ

   cAllEntries := STRTRAN( GetProfString( "Devices" ), Chr( 0 ), CRLF )

   For nStart := 1 To MlCount( cAllEntries )

       cName  := MemoLine( cAllEntries,,nStart)
       cEntry := GetProfString( "Devices",cName,"")
       nJ     := 2

       Do While ! Empty(cPort := StrToken(cEntry,nJ++,","))
          Aadd(aPrinter,Trim(cName)+" , "+Trim(cPort))
       EndDo

   Next

Return(aPrinter)

function IsPrint( QuePrinter )

   LOCAL nStatus

   DEFAULT QuePrinter := "LPT1:"

   nStatus := PrnStatus( QuePrinter )

   if     nStatus <        1 ; return "Impressora Esta Funcionando OK"
   elseif nStatus =        1 ; return "Impressora Pausada"
   elseif nStatus =        2 ; return "Impressora com Erro"
   elseif nStatus =        4 ; return "Impressora Deletando"
   elseif nStatus =        8 ; return "Impressora em Modo Bandeija"
   elseif nStatus =       16 ; return "Impressora Sem Papel"
   elseif nStatus =       32 ; return "Impressora em Modo Manual"
   elseif nStatus =       64 ; return "Impressora com Problema no Papel"
   elseif nStatus =      128 ; return "Impressora Off Line(Desligada)"
   elseif nStatus =      256 ; return "Impressora com IO Ativo"
   elseif nStatus =      512 ; return "Impressora Ocupada"
   elseif nStatus =     1024 ; return "Impressora Imprimindo"
   elseif nStatus =     2048 ; return "Impressora Memoria Lotada"
   elseif nStatus =     4096 ; return "Impressora Nao Instalada"
   elseif nStatus =     8192 ; return "Impressora Aguardando"
   elseif nStatus =    16384 ; return "Impressora Processando"
   elseif nStatus =    32768 ; return "Impressora Inicializando"
   elseif nStatus =    65536 ; return "Impressora em Atencao"
   elseif nStatus =   131072 ; return "Impressora Toner Baixo"
   elseif nStatus =   262144 ; return "Impressora Sem Toner"
   elseif nStatus =   524288 ; return "Impressora PAGE_PUNT(Ineficinte)"
   elseif nStatus =  1048576 ; return "Impressora Intervencao do Usuario"
   elseif nStatus =  2097152 ; return "Impressora Sem Memoria"
   elseif nStatus =  4194304 ; return "Impressora Tampa Aberta"
   elseif nStatus =  8388608 ; return "Impressora Servidor Desconhecido"
   elseif nStatus = 16777217 ; return "Impressora POWER_SAVE(Poupando Energia)"
   endif

RETURN ( nStatus )
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Componer un array con los puertos de impresora instaladas

Postby Loren » Fri Oct 09, 2015 12:18 pm

Buenas,

Antonio: Ya lo intenté, pero al restituir a la impresora original (tal y como se indica en otros hilos de este foro) e intentar imprimir cualquier documento, me genera un error por NO tener ninguna impresora en windows como predeterminada.

Karina: Gracias. Investigaré

Un saludo.
LORENZO.
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Componer un array con los puertos de impresora instaladas

Postby Antonio Linares » Fri Oct 09, 2015 1:18 pm

Loren,

Puedes proporcionar un PRG de ejemplo de cómo lo has intentado ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 70 guests