Funciones para detectar impresoras

451 views
Skip to first unread message

El Oso Pedrozo

unread,
Mar 9, 2015, 7:55:13 PM3/9/15
to harbou...@googlegroups.com
Hola a todos,soy nuevo en esta pagina y con el lenguaje tambien quiero saber si este lenguaje  posee funciones para detectar impresoras en los distintos puertos, ejemplo: lpt1, com1, usb, red,y ademas que detecte si la impresora  esta encendida ( online) algo asi como el isprinter de clipper.

Si es asi me gustaria que me dieran una mano con estas funciones gracias.....

Clippero

unread,
Mar 10, 2015, 7:32:48 AM3/10/15
to harbou...@googlegroups.com

El Oso Pedrozo

unread,
Mar 10, 2015, 2:06:08 PM3/10/15
to harbou...@googlegroups.com
Hola Clippero, mil gracias por tu ayuda espero encontrar esas funciones para poder trabajar con las impresoras yo pienso hacer los programas a modo consola dejame revisar y te cuento cualquier duda..

A otra pregunta como haces los programas a modo consola o con librerias visuales ...



--
--
You received this message because you are subscribed to the Google
Groups "Harbour Users" group.
Unsubscribe: harbour-user...@googlegroups.com
Web: http://groups.google.com/group/harbour-users

---
You received this message because you are subscribed to a topic in the Google Groups "Harbour Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/harbour-users/WgmFT8dpTaw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to harbour-user...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Clippero

unread,
Mar 11, 2015, 8:22:45 AM3/11/15
to harbou...@googlegroups.com
Yo tengo todos mis programas en modo consola.
Hasta donde se, las librerías gráficas son para ambiente GUI (gráfico) aunque se puede lograr un ambiente CUI (hibrido, texto y gráfico)
Por ejemplo tengo un programa con la librería GTWVG en modo consola con un menú en modo gráfico.
El producto final es un .exe en modo hibrido que ya no corre dentro de una ventana cmd (en el caso de windows) sino que es una aplicación en una ventana windows sin la posibilidad de configurar las propiedades de la ventana de consola de windows, no se si soy claro.
Los ajustes de tamaño y font ya no se hacen como en la aplicación en ventana de consola de windows, funcionan las ñ y los tildes como en cualquier programa windows, sin los problemas del modo consola.
No medí el consumo de memoria.
Pero al ser un hibrido, no termina siendo ni una cosa ni la otra, si bien el menú es gráfico, el uso del mouse se termina cuando salís del menú a una opción del mismo, para eso tuve que programar el uso de mouse en browses y gets, pero no me quedó como yo quería.
No encontré forma de hacer interactuar el menú en modo gráfico con el resto de la aplicación en modo consola, por ejemplo cada vez que selecciono una opción y me voy de la pantalla principal, mato el menú y cuando vuelvo del procedure lo activo otra vez.
El modo GUI está pensado para trabajar con ventanas, no queda otra, y para trabajar con ventanas hay que manejar hilos (trheads) para poder lanzar dichas ventanas en esos hilos.
En el modo CUI habría que hacer lo mismo.
El modo consola tiene un solo camino de ida y de vuelta, es el menú el que maneja el estado de espera principal del programa, de ahí salís para las opciones y ahi volvés, siempre en el mismo bucle por llamarlo de alguna manera.
En el modo GUI no es así, el menú no tiene el control del estado de espera porque no existe un único estado de espera, las opciones de menú se lanzan y tienen vida propia, podrías lanzar una misma opción de menú varias veces, no se si soy claro.
En mi caso hice un bucle donde se corre el menú gráfico para imitar este estado de espera único, eje del sistema.
Otro tema, hasta donde se, GTWVG es solo para windows, no es compatible con linux, en mi caso es fundamental tener herramientas multiplataforma.
En este caso la que sirve es HBQT

En este momento estoy desarrollando un programa nuevo totalmente en modo consola, con un el menú de Clipper 5.3 que permite manejo de mouse, a esto le sumo el manejo de mouse en browses y gets y listo.
Le doy una apariencia mas "Windows" usando colores grises y tratando de no dejar fondos negros y chau, queda bien, todo funciona como estoy acostumbrado y le mejoro el manejo a los que vienen super acostumbrados al mouse.

El manejo de estos cambios se hacen en los archivos .hbp incluyendo o sacando librerías y con los parámetros de hbmk2 por ejemplo -gui
Hay muchos post al respecto en esta lista.

Espero no haberte aburrido con los comentarios.

Fermín

El Oso Pedrozo

unread,
Mar 11, 2015, 10:30:26 AM3/11/15
to harbou...@googlegroups.com
Hola Fermin como estas, me parece interesante tu comentario bueno yo pienso seguir trabajando a modo consola, para futuro quiero comenzar a modo visual.

Una cosa que te quiero  comentar, en la pagina que me indicastes logre ver varias funciones para detectar impresoras  esas funciones trabajan bien a nivel de consola en tus programas ? hay alguna de ellas que te detecte todas las impresoras locales y de red. En cualquier puerto ( USB, LPT, COM )  Quiero hacer una funcion para esto y despues verificar con otra funcion si la impresora esta online aparte de otras cosas pero estas son las principales si no es molestia para ti me podrias decir el nombre de esas funciones ya que para mi es urgente.

Otra pregunta Fermin, que tan rapido son los ejecutables hechos con esta version de harbour , que te parece esta version de harbour buena !!! muy buena !!! o demasiado buena !!! 

Asi como estas preguntas quizas tenga mas espero no molestarte con los estos comentarios.





Clippero

unread,
Mar 12, 2015, 12:30:10 PM3/12/15
to harbou...@googlegroups.com
Harbour, anda volando, mucho mejor de Clipper compilado con CauseWay o Exospace, ni te digo con Rtlink

Sobre las impresoras, vá código, ojalá sirva de algo, no es mio, pero está probado y anda.

Procedure main()
cls

?? 'Print test'
? '---------------------------------'
? SET(_SET_DEVICE)

aPrinter:=GetPrinters()

IF EMPTY(aPrinter)
   ? '----- No Printers installed'
  ELSE
   set printer to (GetDefaultPrinter())
   ? SET(_SET_PRINTER)
   ? SET(_SET_PRINTFILE)
   set console off
   set printer on

   ? 'Default Printer'
   ?'----------------'
   ? GetDefaultPrinter()
   ?
   ? 'Printers Available'
   ?'-------------------'
   FOR x:= 1 TO LEN(aPrinter)
       ? aPrinter[x]
   NEXT x
   aPrinter:= GetPrinters(.T.)
   ? 'Printers and Ports'
   ?'-------------------'
   FOR x:= 1 TO LEN(aPrinter)
       ? aPrinter[x,1]+' on '+aPrinter[x,2]
   NEXT x
   EJECT
   set printer off
   set console on
   set printer to
ENDIF

? SET(_SET_PRINTER)
? SET(_SET_DEVICE)

WAIT "Presione Enter para continuar"

Return

Reply all
Reply to author
Forward
0 new messages