Componer un array con los puertos de impresora instaladas

Post Reply
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Componer un array con los puertos de impresora instaladas

Post 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.
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Componer un array con los puertos de impresora instaladas

Post by Loren »

¿?
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Componer un array con los puertos de impresora instaladas

Post by Antonio Linares »

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

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Componer un array con los puertos de impresora instaladas

Post 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 )
 
João Santos - São Paulo - Brasil
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Re: Componer un array con los puertos de impresora instaladas

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Componer un array con los puertos de impresora instaladas

Post by Antonio Linares »

Loren,

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

Antonio Linares
www.fivetechsoft.com
Post Reply