Page 1 of 1

Componer un array con los puertos de impresora instaladas

Posted: Wed Oct 07, 2015 11:12 am
by Loren
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.

Re: Componer un array con los puertos de impresora instaladas

Posted: Thu Oct 08, 2015 7:19 am
by Loren
¿?

Re: Componer un array con los puertos de impresora instaladas

Posted: Thu Oct 08, 2015 8:38 am
by Antonio Linares
Has probado a seleccionar la que te interesa y luego llamar a PrnGetPort() ?

Re: Componer un array con los puertos de impresora instaladas

Posted: Thu Oct 08, 2015 2:14 pm
by karinha
Mira se ayuda:

Code: Select all

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 )
 

Re: Componer un array con los puertos de impresora instaladas

Posted: Fri Oct 09, 2015 12:18 pm
by Loren
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.

Re: Componer un array con los puertos de impresora instaladas

Posted: Fri Oct 09, 2015 1:18 pm
by Antonio Linares
Loren,

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