In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
SET PRINTER
SET PRINTER
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
@ 10,10 SAY "HOLA MUNDO"
EJECT
SET PRINTER TO
SET DEVICE TO SCREEN
¿Como puedo saber si el puerto LPT1 está disponible/conectado???
Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de Red,
si no está el servidor de la impresora conectada, la aplicación se queda
"bloqueada"... entra en un bucle infinito...
Gracias.
Un Saludo,
Xevi.
SET PRINTER TO LPT1
@ 10,10 SAY "HOLA MUNDO"
EJECT
SET PRINTER TO
SET DEVICE TO SCREEN
¿Como puedo saber si el puerto LPT1 está disponible/conectado???
Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de Red,
si no está el servidor de la impresora conectada, la aplicación se queda
"bloqueada"... entra en un bucle infinito...
Gracias.
Un Saludo,
Xevi.
SET PRINTER
Xevi,
> ¿Como puedo saber si el puerto LPT1 está disponible/conectado???
>
> Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de
> Red, si no está el servidor de la impresora conectada, la aplicación se
> queda "bloqueada"... entra en un bucle infinito...
Prueba con la función IsPrinter(). Yo nunca la he usado con [x]Harbour, pero
se supone que debería funcionar.
--
Un saludo,
José F. Giménez
> ¿Como puedo saber si el puerto LPT1 está disponible/conectado???
>
> Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de
> Red, si no está el servidor de la impresora conectada, la aplicación se
> queda "bloqueada"... entra en un bucle infinito...
Prueba con la función IsPrinter(). Yo nunca la he usado con [x]Harbour, pero
se supone que debería funcionar.
--
Un saludo,
José F. Giménez
SET PRINTER
Jose,
Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
está disponible!!!
Lo que necesitaría es poder cargar en un Array el comando NET USE...
que ese comando SI informa de los puertos y unidades disponibles...
¿Puede ser posible???
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43842a4f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> ¿Como puedo saber si el puerto LPT1 está disponible/conectado???
>>
>> Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de
>> Red, si no está el servidor de la impresora conectada, la aplicación se
>> queda "bloqueada"... entra en un bucle infinito...
>
> Prueba con la función IsPrinter(). Yo nunca la he usado con [x]Harbour,
> pero se supone que debería funcionar.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
está disponible!!!
Lo que necesitaría es poder cargar en un Array el comando NET USE...
que ese comando SI informa de los puertos y unidades disponibles...
¿Puede ser posible???
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43842a4f$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> ¿Como puedo saber si el puerto LPT1 está disponible/conectado???
>>
>> Lo que me ocurre... cuando utilizo esta sentencia, en una impresora de
>> Red, si no está el servidor de la impresora conectada, la aplicación se
>> queda "bloqueada"... entra en un bucle infinito...
>
> Prueba con la función IsPrinter(). Yo nunca la he usado con [x]Harbour,
> pero se supone que debería funcionar.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
SET PRINTER
Xevi,
> Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
> está disponible!!!
Debería ser como en Clipper, es decir, que retorne .T. si la impresora está
lista y .F. si no; no si está imprimiendo o no. Otra cosa es que si es una
impresora de red, para windows la cola está disponible, y puede que siempre
devuelva .T.
> Lo que necesitaría es poder cargar en un Array el comando NET USE...
> que ese comando SI informa de los puertos y unidades disponibles...
> ¿Puede ser posible???
Supongo que te refieres a lanzar el comando y recoger su salida. No es que
sea muy de mi agrado, pero puedes usar algo como:
ShellExecute( 0, "open", "NET USE.... > netuse.txt" )
y después cargar el fichero netuse.txt y procesarlo.
--
Un saludo,
José F. Giménez
> Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
> está disponible!!!
Debería ser como en Clipper, es decir, que retorne .T. si la impresora está
lista y .F. si no; no si está imprimiendo o no. Otra cosa es que si es una
impresora de red, para windows la cola está disponible, y puede que siempre
devuelva .T.
> Lo que necesitaría es poder cargar en un Array el comando NET USE...
> que ese comando SI informa de los puertos y unidades disponibles...
> ¿Puede ser posible???
Supongo que te refieres a lanzar el comando y recoger su salida. No es que
sea muy de mi agrado, pero puedes usar algo como:
ShellExecute( 0, "open", "NET USE.... > netuse.txt" )
y después cargar el fichero netuse.txt y procesarlo.
--
Un saludo,
José F. Giménez
SET PRINTER
Jose,
No funciona!!!
local nHandle
ShellExecute( 0, "open", "NET USE >C:NETUSE.txt" )
*WinExec( "NET USE >C:NETUSE.txt", SW_NORMAL, .F. )
nHandle := FOpen( "C:NETUSE.txt" )
MsgInfo( nHandle )
MsgInfo( FReadStr( nHandle, 2000 ) )
Si ejecutas el comando NET USE >C:NETUSE.txt desde el símbolo de sistema SI que crea el fichero, pero desde la aplicación Xailer/xHarbour no crea el fichero... nHandle devuelve -1
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:4384369a$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
>> está disponible!!!
>
> Debería ser como en Clipper, es decir, que retorne .T. si la impresora está
> lista y .F. si no; no si está imprimiendo o no. Otra cosa es que si es una
> impresora de red, para windows la cola está disponible, y puede que siempre
> devuelva .T.
>
>
>> Lo que necesitaría es poder cargar en un Array el comando NET USE...
>> que ese comando SI informa de los puertos y unidades disponibles...
>> ¿Puede ser posible???
>
> Supongo que te refieres a lanzar el comando y recoger su salida. No es que
> sea muy de mi agrado, pero puedes usar algo como:
>
> ShellExecute( 0, "open", "NET USE.... > netuse.txt" )
>
> y después cargar el fichero netuse.txt y procesarlo.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--
No funciona!!!
local nHandle
ShellExecute( 0, "open", "NET USE >C:NETUSE.txt" )
*WinExec( "NET USE >C:NETUSE.txt", SW_NORMAL, .F. )
nHandle := FOpen( "C:NETUSE.txt" )
MsgInfo( nHandle )
MsgInfo( FReadStr( nHandle, 2000 ) )
Si ejecutas el comando NET USE >C:NETUSE.txt desde el símbolo de sistema SI que crea el fichero, pero desde la aplicación Xailer/xHarbour no crea el fichero... nHandle devuelve -1
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:4384369a$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> Por lo visto IsPrinter() informa de si está imprimiendo... no si el puerto
>> está disponible!!!
>
> Debería ser como en Clipper, es decir, que retorne .T. si la impresora está
> lista y .F. si no; no si está imprimiendo o no. Otra cosa es que si es una
> impresora de red, para windows la cola está disponible, y puede que siempre
> devuelva .T.
>
>
>> Lo que necesitaría es poder cargar en un Array el comando NET USE...
>> que ese comando SI informa de los puertos y unidades disponibles...
>> ¿Puede ser posible???
>
> Supongo que te refieres a lanzar el comando y recoger su salida. No es que
> sea muy de mi agrado, pero puedes usar algo como:
>
> ShellExecute( 0, "open", "NET USE.... > netuse.txt" )
>
> y después cargar el fichero netuse.txt y procesarlo.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--
SET PRINTER
Xevi,
¿Como hacías esa operación en Clipper?
Técnicamente (no lo he probado) en xHarbour debe ser lo mismo.
Saludos,
José Luis Capel
¿Como hacías esa operación en Clipper?
Técnicamente (no lo he probado) en xHarbour debe ser lo mismo.
Saludos,
José Luis Capel
SET PRINTER
José Luis,
No lo hacía en Clipper.
Pero como los cambios son para ir mejorando...
Lo único que he conseguido es montar la instrucción
NET USE >NetUse.txt
en un fichero.bat
Y llamar al fichero.bat desde ShellExecute()
Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
conectados, como ocurre con las unidades, A: C: D:...
Si a alguien se le ocurre como detectar un puerto LPT si está o no
conectado... lo agradecería.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:43845196$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> ¿Como hacías esa operación en Clipper?
>
> Técnicamente (no lo he probado) en xHarbour debe ser lo mismo.
>
> Saludos,
> José Luis Capel
>
No lo hacía en Clipper.
Pero como los cambios son para ir mejorando...
Lo único que he conseguido es montar la instrucción
NET USE >NetUse.txt
en un fichero.bat
Y llamar al fichero.bat desde ShellExecute()
Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
conectados, como ocurre con las unidades, A: C: D:...
Si a alguien se le ocurre como detectar un puerto LPT si está o no
conectado... lo agradecería.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:43845196$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> ¿Como hacías esa operación en Clipper?
>
> Técnicamente (no lo he probado) en xHarbour debe ser lo mismo.
>
> Saludos,
> José Luis Capel
>
SET PRINTER
Xevi,
>
> Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
> conectados, como ocurre con las unidades, A: C: D:...
> Si a alguien se le ocurre como detectar un puerto LPT si está o no
> conectado... lo agradecería.
>
En casa tengo el wrapper a WNetGetConnection que es una función del API
de windows que devuelve el nombre el nombre de red asociado a un recurso
local.
Sería algo así:
cRecurso := wNetGetConn( "Z:") ---> ServidorCarpetaRemota
Y _creo_ que podrías interrogar esto:
cImpresora := wNetGetConn("LPT1:") ----->ServidorImpresoraRemota1
Esta tarde lo dejo aquí...
Saludos,
José Luis Capel
>
> Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
> conectados, como ocurre con las unidades, A: C: D:...
> Si a alguien se le ocurre como detectar un puerto LPT si está o no
> conectado... lo agradecería.
>
En casa tengo el wrapper a WNetGetConnection que es una función del API
de windows que devuelve el nombre el nombre de red asociado a un recurso
local.
Sería algo así:
cRecurso := wNetGetConn( "Z:") ---> ServidorCarpetaRemota
Y _creo_ que podrías interrogar esto:
cImpresora := wNetGetConn("LPT1:") ----->ServidorImpresoraRemota1
Esta tarde lo dejo aquí...
Saludos,
José Luis Capel
SET PRINTER
Xevi,
> Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
> conectados, como ocurre con las unidades, A: C: D:...
No lo he mirado, pero seguro que sí existe. Aunque habrá que hacer el
"wrapper"...
> Si a alguien se le ocurre como detectar un puerto LPT si está o no
> conectado... lo agradecería.
Yo creo que no deberías atacar directamente el puerto; en mi opinión, es
hacerlo como windows NO quiere que se haga, y por eso se complica. Yo lo que
haría es manejar la cola al estilo de windows, a través del objeto Printer.
Y en el caso de que tengas una impresora matricial o de tickets y necesites
enviarle directamente el texto sin que lo procese el driver de la impresora
puedes usar el método WriteData()
--
Un saludo,
José F. Giménez
> Pero creo que debe de haber alguna API que devuelva el nombre de LPTs
> conectados, como ocurre con las unidades, A: C: D:...
No lo he mirado, pero seguro que sí existe. Aunque habrá que hacer el
"wrapper"...
> Si a alguien se le ocurre como detectar un puerto LPT si está o no
> conectado... lo agradecería.
Yo creo que no deberías atacar directamente el puerto; en mi opinión, es
hacerlo como windows NO quiere que se haga, y por eso se complica. Yo lo que
haría es manejar la cola al estilo de windows, a través del objeto Printer.
Y en el caso de que tengas una impresora matricial o de tickets y necesites
enviarle directamente el texto sin que lo procese el driver de la impresora
puedes usar el método WriteData()
--
Un saludo,
José F. Giménez
SET PRINTER
Xevi,
aquí tienes el "wrapper":
//---------------------------------------------------------- --------------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
XA_FUNC( WNETGETCONNECTION )
{
char *cLocalName = hb_parc( 1 );
char *cRemoteName;
DWORD nLen = 0, nError;
nError = WNetGetConnection( cLocalName, NULL, &nLen );
if( nLen )
{
cRemoteName = hb_xgrab( nLen );
nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
hb_storc( cRemoteName, 2 );
hb_xfree( cRemoteName );
}
hb_retnl( nError );
}
#pragma ENDDUMP
//---------------------------------------------------------- --------------------
Para usarla tienes que hacerlo así:
LOCAL cImpresora
IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
MsgInfo( "Hay un problema al usar la impresora" )
ENDIF
...
Lo normal es que si no está disponible te devuelva 1201
(ERROR_CONNECTION_UNAVAIL).
--
Un saludo,
José F. Giménez
aquí tienes el "wrapper":
//---------------------------------------------------------- --------------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
XA_FUNC( WNETGETCONNECTION )
{
char *cLocalName = hb_parc( 1 );
char *cRemoteName;
DWORD nLen = 0, nError;
nError = WNetGetConnection( cLocalName, NULL, &nLen );
if( nLen )
{
cRemoteName = hb_xgrab( nLen );
nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
hb_storc( cRemoteName, 2 );
hb_xfree( cRemoteName );
}
hb_retnl( nError );
}
#pragma ENDDUMP
//---------------------------------------------------------- --------------------
Para usarla tienes que hacerlo así:
LOCAL cImpresora
IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
MsgInfo( "Hay un problema al usar la impresora" )
ENDIF
...
Lo normal es que si no está disponible te devuelva 1201
(ERROR_CONNECTION_UNAVAIL).
--
Un saludo,
José F. Giménez
SET PRINTER
PERFECTO!!!
Gracias, Jose y José Luis.
Eso es lo que necesitaba.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43845f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> aquí tienes el "wrapper":
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
>
> XA_FUNC( WNETGETCONNECTION )
> {
> char *cLocalName = hb_parc( 1 );
> char *cRemoteName;
> DWORD nLen = 0, nError;
>
> nError = WNetGetConnection( cLocalName, NULL, &nLen );
> if( nLen )
> {
> cRemoteName = hb_xgrab( nLen );
> nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
> hb_storc( cRemoteName, 2 );
> hb_xfree( cRemoteName );
> }
> hb_retnl( nError );
> }
>
> #pragma ENDDUMP
>
> //---------------------------------------------------------- --------------------
>
> Para usarla tienes que hacerlo así:
>
> LOCAL cImpresora
>
> IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
> MsgInfo( "Hay un problema al usar la impresora" )
> ENDIF
> ...
>
> Lo normal es que si no está disponible te devuelva 1201
> (ERROR_CONNECTION_UNAVAIL).
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Gracias, Jose y José Luis.
Eso es lo que necesitaba.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43845f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> aquí tienes el "wrapper":
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
>
> XA_FUNC( WNETGETCONNECTION )
> {
> char *cLocalName = hb_parc( 1 );
> char *cRemoteName;
> DWORD nLen = 0, nError;
>
> nError = WNetGetConnection( cLocalName, NULL, &nLen );
> if( nLen )
> {
> cRemoteName = hb_xgrab( nLen );
> nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
> hb_storc( cRemoteName, 2 );
> hb_xfree( cRemoteName );
> }
> hb_retnl( nError );
> }
>
> #pragma ENDDUMP
>
> //---------------------------------------------------------- --------------------
>
> Para usarla tienes que hacerlo así:
>
> LOCAL cImpresora
>
> IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
> MsgInfo( "Hay un problema al usar la impresora" )
> ENDIF
> ...
>
> Lo normal es que si no está disponible te devuelva 1201
> (ERROR_CONNECTION_UNAVAIL).
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
SET PRINTER
¿Como compruebo si el puerto LPT1 local está disponible???
Habría algun Wrapper para puertos LOCALES
Algo como... WLocalGetConnection
Se trataría primero de intentar localizar el puerto localmente y si no está
disponible intentar localizarlo en la Red.
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43845f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> aquí tienes el "wrapper":
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
>
> XA_FUNC( WNETGETCONNECTION )
> {
> char *cLocalName = hb_parc( 1 );
> char *cRemoteName;
> DWORD nLen = 0, nError;
>
> nError = WNetGetConnection( cLocalName, NULL, &nLen );
> if( nLen )
> {
> cRemoteName = hb_xgrab( nLen );
> nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
> hb_storc( cRemoteName, 2 );
> hb_xfree( cRemoteName );
> }
> hb_retnl( nError );
> }
>
> #pragma ENDDUMP
>
> //---------------------------------------------------------- --------------------
>
> Para usarla tienes que hacerlo así:
>
> LOCAL cImpresora
>
> IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
> MsgInfo( "Hay un problema al usar la impresora" )
> ENDIF
> ...
>
> Lo normal es que si no está disponible te devuelva 1201
> (ERROR_CONNECTION_UNAVAIL).
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
Habría algun Wrapper para puertos LOCALES
Algo como... WLocalGetConnection
Se trataría primero de intentar localizar el puerto localmente y si no está
disponible intentar localizarlo en la Red.
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:43845f40$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
> aquí tienes el "wrapper":
>
> //---------------------------------------------------------- --------------------
>
> #pragma BEGINDUMP
>
> #include "windows.h"
> #include "xailer.h"
>
> XA_FUNC( WNETGETCONNECTION )
> {
> char *cLocalName = hb_parc( 1 );
> char *cRemoteName;
> DWORD nLen = 0, nError;
>
> nError = WNetGetConnection( cLocalName, NULL, &nLen );
> if( nLen )
> {
> cRemoteName = hb_xgrab( nLen );
> nError = WNetGetConnection( cLocalName, cRemoteName, &nLen );
> hb_storc( cRemoteName, 2 );
> hb_xfree( cRemoteName );
> }
> hb_retnl( nError );
> }
>
> #pragma ENDDUMP
>
> //---------------------------------------------------------- --------------------
>
> Para usarla tienes que hacerlo así:
>
> LOCAL cImpresora
>
> IF WNetGetConnection( "LPT1:", @cImpresora ) != 0
> MsgInfo( "Hay un problema al usar la impresora" )
> ENDIF
> ...
>
> Lo normal es que si no está disponible te devuelva 1201
> (ERROR_CONNECTION_UNAVAIL).
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
SET PRINTER
Xevi,
> ¿Como compruebo si el puerto LPT1 local está disponible???
>
> Habría algun Wrapper para puertos LOCALES
>
> Algo como... WLocalGetConnection
>
> Se trataría primero de intentar localizar el puerto localmente y si no
> está disponible intentar localizarlo en la Red.
¿Has probado IsPrinter() en el puerto local? Podrías usar
WNetGetConnection() para comprobar si es un puerto de red, y si no lo es,
comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
--
Un saludo,
José F. Giménez
> ¿Como compruebo si el puerto LPT1 local está disponible???
>
> Habría algun Wrapper para puertos LOCALES
>
> Algo como... WLocalGetConnection
>
> Se trataría primero de intentar localizar el puerto localmente y si no
> está disponible intentar localizarlo en la Red.
¿Has probado IsPrinter() en el puerto local? Podrías usar
WNetGetConnection() para comprobar si es un puerto de red, y si no lo es,
comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
--
Un saludo,
José F. Giménez
SET PRINTER
Jose,
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
En un ordenador con puerto LPT1, y una impresora conectada y encendida...
MsgInfo( IsPrinter( "LPT1" ) )
MsgInfo( IsPrinter( "LPT2" ) )
MsgInfo( IsPrinter( "LPT3" ) )
MsgInfo( IsPrinter( "LPT1:" ) )
MsgInfo( IsPrinter( "LPT2:" ) )
MsgInfo( IsPrinter( "LPT3:" ) )
La respuesta es SIEMPRE la misma F.
¿Hago algo mal???
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Subsistema: TERM
Código de error: 2014
Estado: .T.
Descripción: Create error
Operación: LPT5.prn
Argumentos:
Fichero:
Código error SO: 2
Pila de llamadas:
SET (0)
MAIN (17)
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> ¿Como compruebo si el puerto LPT1 local está disponible???
>>
>> Habría algun Wrapper para puertos LOCALES
>>
>> Algo como... WLocalGetConnection
>>
>> Se trataría primero de intentar localizar el puerto localmente y si no
>> está disponible intentar localizarlo en la Red.
>
> ¿Has probado IsPrinter() en el puerto local? Podrías usar
> WNetGetConnection() para comprobar si es un puerto de red, y si no lo es,
> comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
En un ordenador con puerto LPT1, y una impresora conectada y encendida...
MsgInfo( IsPrinter( "LPT1" ) )
MsgInfo( IsPrinter( "LPT2" ) )
MsgInfo( IsPrinter( "LPT3" ) )
MsgInfo( IsPrinter( "LPT1:" ) )
MsgInfo( IsPrinter( "LPT2:" ) )
MsgInfo( IsPrinter( "LPT3:" ) )
La respuesta es SIEMPRE la misma F.
¿Hago algo mal???
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Subsistema: TERM
Código de error: 2014
Estado: .T.
Descripción: Create error
Operación: LPT5.prn
Argumentos:
Fichero:
Código error SO: 2
Pila de llamadas:
SET (0)
MAIN (17)
Gracias.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>
> Xevi,
>
>> ¿Como compruebo si el puerto LPT1 local está disponible???
>>
>> Habría algun Wrapper para puertos LOCALES
>>
>> Algo como... WLocalGetConnection
>>
>> Se trataría primero de intentar localizar el puerto localmente y si no
>> está disponible intentar localizarlo en la Red.
>
> ¿Has probado IsPrinter() en el puerto local? Podrías usar
> WNetGetConnection() para comprobar si es un puerto de red, y si no lo es,
> comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>
>
--
SET PRINTER
Xevi,
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
Nunca lo he usado en xHarbour (en Clipper tenía mi propia función IsPrinter() escrita en assembler), pero debería funcionar. En cuanto tenga un rato le echo un vistazo.
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Lo más fácil y práctico es usar un bloque TRY / CATCH / END:
TRY
SET DEVICE TO PRINTER5
SET PRINTER TO LPT5
.... // Resto de impresion
SET PRINTER TO
SET DEVICE TO SCREEN
CATCH oError
MsgStop( oError:Description, "Error al imprimir" )
END
--
Un saludo,
José F. Giménez
--
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
Nunca lo he usado en xHarbour (en Clipper tenía mi propia función IsPrinter() escrita en assembler), pero debería funcionar. En cuanto tenga un rato le echo un vistazo.
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Lo más fácil y práctico es usar un bloque TRY / CATCH / END:
TRY
SET DEVICE TO PRINTER5
SET PRINTER TO LPT5
.... // Resto de impresion
SET PRINTER TO
SET DEVICE TO SCREEN
CATCH oError
MsgStop( oError:Description, "Error al imprimir" )
END
--
Un saludo,
José F. Giménez
--
SET PRINTER
Xevi,
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
Nunca lo he usado en xHarbour (en Clipper tenía mi propia función IsPrinter() escrita en assembler), pero debería funcionar. En cuanto tenga un rato le echo un vistazo.
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Lo más fácil y práctico es usar un bloque TRY / CATCH / END:
TRY
SET DEVICE TO PRINTER5
SET PRINTER TO LPT5
.... // Resto de impresion
SET PRINTER TO
SET DEVICE TO SCREEN
CATCH oError
MsgStop( oError:Description, "Error al imprimir" )
END
--
Un saludo,
José F. Giménez
--
IsPrinter() no me funciona... o no se hacerlo funcionar !!!
Nunca lo he usado en xHarbour (en Clipper tenía mi propia función IsPrinter() escrita en assembler), pero debería funcionar. En cuanto tenga un rato le echo un vistazo.
y otra consulta sobre imprimir e interceptar el error...
En Clipper existía el objeto oError, que podíamos "interceptar" e incluso "modificar" en el prg... ErrorSys.prg.
¿Cómo podemos interceptar los errores en Xailer/xHarbour???
Ya que si mando a imprimir
SET DEVICE TO PRINTER
SET PRINTER TO LPT5
y el puerto no existe
me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
Lo más fácil y práctico es usar un bloque TRY / CATCH / END:
TRY
SET DEVICE TO PRINTER5
SET PRINTER TO LPT5
.... // Resto de impresion
SET PRINTER TO
SET DEVICE TO SCREEN
CATCH oError
MsgStop( oError:Description, "Error al imprimir" )
END
--
Un saludo,
José F. Giménez
--
SET PRINTER
Xevi,
IsPrinter solo funciona con LPT1 y no acepta parámetros.
Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
Saludos,
José Luis Capel
Xevi escribió:
> Jose,
>
> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>
> En un ordenador con puerto LPT1, y una impresora conectada y encendida...
> MsgInfo( IsPrinter( "LPT1" ) )
> MsgInfo( IsPrinter( "LPT2" ) )
> MsgInfo( IsPrinter( "LPT3" ) )
> MsgInfo( IsPrinter( "LPT1:" ) )
> MsgInfo( IsPrinter( "LPT2:" ) )
> MsgInfo( IsPrinter( "LPT3:" ) )
> La respuesta es SIEMPRE la misma F.
> ¿Hago algo mal???
>
>
> y otra consulta sobre imprimir e interceptar el error...
>
> En Clipper existía el objeto oError, que podíamos "interceptar" e
> incluso "modificar" en el prg... ErrorSys.prg.
> ¿Cómo podemos interceptar los errores en Xailer/xHarbour???
> Ya que si mando a imprimir
> SET DEVICE TO PRINTER
> SET PRINTER TO LPT5
> y el puerto no existe
> me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
> Subsistema: TERM
> Código de error: 2014
> Estado: .T.
> Descripción: Create error
> Operación: LPT5.prn
> Argumentos:
> Fichero:
> Código error SO: 2
>
> Pila de llamadas:
> SET (0)
> MAIN (17)
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
> mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
> >
> > Xevi,
> >
> >> ¿Como compruebo si el puerto LPT1 local está disponible???
> >>
> >> Habría algun Wrapper para puertos LOCALES
> >>
> >> Algo como... WLocalGetConnection
> >>
> >> Se trataría primero de intentar localizar el puerto localmente y si no
> >> está disponible intentar localizarlo en la Red.
> >
> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
> es,
> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
> >
> >
> > --
> > Un saludo,
> >
> > José F. Giménez
> >
> >
> >
IsPrinter solo funciona con LPT1 y no acepta parámetros.
Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
Saludos,
José Luis Capel
Xevi escribió:
> Jose,
>
> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>
> En un ordenador con puerto LPT1, y una impresora conectada y encendida...
> MsgInfo( IsPrinter( "LPT1" ) )
> MsgInfo( IsPrinter( "LPT2" ) )
> MsgInfo( IsPrinter( "LPT3" ) )
> MsgInfo( IsPrinter( "LPT1:" ) )
> MsgInfo( IsPrinter( "LPT2:" ) )
> MsgInfo( IsPrinter( "LPT3:" ) )
> La respuesta es SIEMPRE la misma F.
> ¿Hago algo mal???
>
>
> y otra consulta sobre imprimir e interceptar el error...
>
> En Clipper existía el objeto oError, que podíamos "interceptar" e
> incluso "modificar" en el prg... ErrorSys.prg.
> ¿Cómo podemos interceptar los errores en Xailer/xHarbour???
> Ya que si mando a imprimir
> SET DEVICE TO PRINTER
> SET PRINTER TO LPT5
> y el puerto no existe
> me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
> Subsistema: TERM
> Código de error: 2014
> Estado: .T.
> Descripción: Create error
> Operación: LPT5.prn
> Argumentos:
> Fichero:
> Código error SO: 2
>
> Pila de llamadas:
> SET (0)
> MAIN (17)
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
> mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
> >
> > Xevi,
> >
> >> ¿Como compruebo si el puerto LPT1 local está disponible???
> >>
> >> Habría algun Wrapper para puertos LOCALES
> >>
> >> Algo como... WLocalGetConnection
> >>
> >> Se trataría primero de intentar localizar el puerto localmente y si no
> >> está disponible intentar localizarlo en la Red.
> >
> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
> es,
> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar bien.
> >
> >
> > --
> > Un saludo,
> >
> > José F. Giménez
> >
> >
> >
SET PRINTER
MsgInfo( xIsPrinter("LPT1") )
MsgInfo( xIsPrinter("LPT2") )
MsgInfo( xIsPrinter("LPT3") )
MsgInfo( xIsPrinter("LPT4") )
MsgInfo( xIsPrinter("LPT5") )
SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
impresora conectada en LPT1
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> IsPrinter solo funciona con LPT1 y no acepta parámetros.
>
> Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>
> Saludos,
> José Luis Capel
>
> Xevi escribió:
>> Jose,
>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>> En un ordenador con puerto LPT1, y una impresora conectada y
>> encendida...
>> MsgInfo( IsPrinter( "LPT1" ) )
>> MsgInfo( IsPrinter( "LPT2" ) )
>> MsgInfo( IsPrinter( "LPT3" ) )
>> MsgInfo( IsPrinter( "LPT1:" ) )
>> MsgInfo( IsPrinter( "LPT2:" ) )
>> MsgInfo( IsPrinter( "LPT3:" ) )
>> La respuesta es SIEMPRE la misma F.
>> ¿Hago algo mal???
>> y otra consulta sobre imprimir e interceptar el error...
>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>> incluso "modificar" en el prg... ErrorSys.prg.
>> ¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>> Ya que si mando a imprimir
>> SET DEVICE TO PRINTER
>> SET PRINTER TO LPT5
>> y el puerto no existe
>> me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>> Subsistema: TERM
>> Código de error: 2014
>> Estado: .T.
>> Descripción: Create error
>> Operación: LPT5.prn
>> Argumentos:
>> Fichero:
>> Código error SO: 2
>> Pila de llamadas:
>> SET (0)
>> MAIN (17)
>> Gracias.
>> Un Saludo,
>> Xevi.
>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>> mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>> >
>> > Xevi,
>> >
>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>> >>
>> >> Habría algun Wrapper para puertos LOCALES
>> >>
>> >> Algo como... WLocalGetConnection
>> >>
>> >> Se trataría primero de intentar localizar el puerto localmente y si
>> no
>> >> está disponible intentar localizarlo en la Red.
>> >
>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>> es,
>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>> bien.
>> >
>> >
>> > --
>> > Un saludo,
>> >
>> > José F. Giménez
>> >
>> >
>> >
>
MsgInfo( xIsPrinter("LPT2") )
MsgInfo( xIsPrinter("LPT3") )
MsgInfo( xIsPrinter("LPT4") )
MsgInfo( xIsPrinter("LPT5") )
SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
impresora conectada en LPT1
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> IsPrinter solo funciona con LPT1 y no acepta parámetros.
>
> Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>
> Saludos,
> José Luis Capel
>
> Xevi escribió:
>> Jose,
>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>> En un ordenador con puerto LPT1, y una impresora conectada y
>> encendida...
>> MsgInfo( IsPrinter( "LPT1" ) )
>> MsgInfo( IsPrinter( "LPT2" ) )
>> MsgInfo( IsPrinter( "LPT3" ) )
>> MsgInfo( IsPrinter( "LPT1:" ) )
>> MsgInfo( IsPrinter( "LPT2:" ) )
>> MsgInfo( IsPrinter( "LPT3:" ) )
>> La respuesta es SIEMPRE la misma F.
>> ¿Hago algo mal???
>> y otra consulta sobre imprimir e interceptar el error...
>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>> incluso "modificar" en el prg... ErrorSys.prg.
>> ¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>> Ya que si mando a imprimir
>> SET DEVICE TO PRINTER
>> SET PRINTER TO LPT5
>> y el puerto no existe
>> me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>> Subsistema: TERM
>> Código de error: 2014
>> Estado: .T.
>> Descripción: Create error
>> Operación: LPT5.prn
>> Argumentos:
>> Fichero:
>> Código error SO: 2
>> Pila de llamadas:
>> SET (0)
>> MAIN (17)
>> Gracias.
>> Un Saludo,
>> Xevi.
>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>> mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>> >
>> > Xevi,
>> >
>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>> >>
>> >> Habría algun Wrapper para puertos LOCALES
>> >>
>> >> Algo como... WLocalGetConnection
>> >>
>> >> Se trataría primero de intentar localizar el puerto localmente y si
>> no
>> >> está disponible intentar localizarlo en la Red.
>> >
>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>> es,
>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>> bien.
>> >
>> >
>> > --
>> > Un saludo,
>> >
>> > José F. Giménez
>> >
>> >
>> >
>
SET PRINTER
Xevi,
Pues me quedo pillado...
He revisado el fuente de xIsprinter y veo que utiliza una función del
Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
que no se, mirando el MSDN, es si el nombre de la impresora corresponde
a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
algo más esto.
Saludos,
José Luis Capel
Xevi escribió:
>
> MsgInfo( xIsPrinter("LPT1") )
> MsgInfo( xIsPrinter("LPT2") )
> MsgInfo( xIsPrinter("LPT3") )
> MsgInfo( xIsPrinter("LPT4") )
> MsgInfo( xIsPrinter("LPT5") )
>
> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
> impresora conectada en LPT1
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>
>>Xevi,
>>
>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>
>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>
>>Saludos,
>>José Luis Capel
>>
>>Xevi escribió:
>>
>>>Jose,
>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>encendida...
>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>La respuesta es SIEMPRE la misma F.
>>>¿Hago algo mal???
>>> y otra consulta sobre imprimir e interceptar el error...
>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>Ya que si mando a imprimir
>>>SET DEVICE TO PRINTER
>>>SET PRINTER TO LPT5
>>>y el puerto no existe
>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>Subsistema: TERM
>>> Código de error: 2014
>>> Estado: .T.
>>> Descripción: Create error
>>> Operación: LPT5.prn
>>> Argumentos:
>>> Fichero:
>>> Código error SO: 2
>>> Pila de llamadas:
>>> SET (0)
>>> MAIN (17)
>>> Gracias.
>>> Un Saludo,
>>>Xevi.
>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>> >
>>> > Xevi,
>>> >
>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>> >>
>>> >> Habría algun Wrapper para puertos LOCALES
>>> >>
>>> >> Algo como... WLocalGetConnection
>>> >>
>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>no
>>> >> está disponible intentar localizarlo en la Red.
>>> >
>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>es,
>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>bien.
>>> >
>>> >
>>> > --
>>> > Un saludo,
>>> >
>>> > José F. Giménez
>>> >
>>> >
>>> >
>>
>
>
>
Pues me quedo pillado...
He revisado el fuente de xIsprinter y veo que utiliza una función del
Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
que no se, mirando el MSDN, es si el nombre de la impresora corresponde
a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
algo más esto.
Saludos,
José Luis Capel
Xevi escribió:
>
> MsgInfo( xIsPrinter("LPT1") )
> MsgInfo( xIsPrinter("LPT2") )
> MsgInfo( xIsPrinter("LPT3") )
> MsgInfo( xIsPrinter("LPT4") )
> MsgInfo( xIsPrinter("LPT5") )
>
> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
> impresora conectada en LPT1
>
> Gracias.
>
> Un Saludo,
> Xevi.
>
>
> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>
>>Xevi,
>>
>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>
>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>
>>Saludos,
>>José Luis Capel
>>
>>Xevi escribió:
>>
>>>Jose,
>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>encendida...
>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>La respuesta es SIEMPRE la misma F.
>>>¿Hago algo mal???
>>> y otra consulta sobre imprimir e interceptar el error...
>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>Ya que si mando a imprimir
>>>SET DEVICE TO PRINTER
>>>SET PRINTER TO LPT5
>>>y el puerto no existe
>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>Subsistema: TERM
>>> Código de error: 2014
>>> Estado: .T.
>>> Descripción: Create error
>>> Operación: LPT5.prn
>>> Argumentos:
>>> Fichero:
>>> Código error SO: 2
>>> Pila de llamadas:
>>> SET (0)
>>> MAIN (17)
>>> Gracias.
>>> Un Saludo,
>>>Xevi.
>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>> >
>>> > Xevi,
>>> >
>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>> >>
>>> >> Habría algun Wrapper para puertos LOCALES
>>> >>
>>> >> Algo como... WLocalGetConnection
>>> >>
>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>no
>>> >> está disponible intentar localizarlo en la Red.
>>> >
>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>es,
>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>bien.
>>> >
>>> >
>>> > --
>>> > Un saludo,
>>> >
>>> > José F. Giménez
>>> >
>>> >
>>> >
>>
>
>
>
SET PRINTER
José Luis,
XISPRINTER
.. Syntax
XISPRINTER(<cPrinterName>) -->
.. Arguments
cPrinterName:
.. Files
rtl.lib, source is isprint.c
¿No será que xIsPrinter acepta el parámetro del nombre de la impresora, no del puerto ???
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje news:[email=43873dbe@ozsrvnegro.ozlan.local...]43873dbe@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Pues me quedo pillado...
>
> He revisado el fuente de xIsprinter y veo que utiliza una función del
> Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
> que no se, mirando el MSDN, es si el nombre de la impresora corresponde
> a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
> algo más esto.
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>>
>> MsgInfo( xIsPrinter("LPT1") )
>> MsgInfo( xIsPrinter("LPT2") )
>> MsgInfo( xIsPrinter("LPT3") )
>> MsgInfo( xIsPrinter("LPT4") )
>> MsgInfo( xIsPrinter("LPT5") )
>>
>> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
>> impresora conectada en LPT1
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
>> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>>
>>>Xevi,
>>>
>>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>>
>>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>>
>>>Saludos,
>>>José Luis Capel
>>>
>>>Xevi escribió:
>>>
>>>>Jose,
>>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>>encendida...
>>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>>La respuesta es SIEMPRE la misma F.
>>>>¿Hago algo mal???
>>>> y otra consulta sobre imprimir e interceptar el error...
>>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>>Ya que si mando a imprimir
>>>>SET DEVICE TO PRINTER
>>>>SET PRINTER TO LPT5
>>>>y el puerto no existe
>>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>>Subsistema: TERM
>>>> Código de error: 2014
>>>> Estado: .T.
>>>> Descripción: Create error
>>>> Operación: LPT5.prn
>>>> Argumentos:
>>>> Fichero:
>>>> Código error SO: 2
>>>> Pila de llamadas:
>>>> SET (0)
>>>> MAIN (17)
>>>> Gracias.
>>>> Un Saludo,
>>>>Xevi.
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>>> >
>>>> > Xevi,
>>>> >
>>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>>> >>
>>>> >> Habría algun Wrapper para puertos LOCALES
>>>> >>
>>>> >> Algo como... WLocalGetConnection
>>>> >>
>>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>>no
>>>> >> está disponible intentar localizarlo en la Red.
>>>> >
>>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>>es,
>>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>>bien.
>>>> >
>>>> >
>>>> > --
>>>> > Un saludo,
>>>> >
>>>> > José F. Giménez
>>>> >
>>>> >
>>>> >
>>>
>>
>>
>>
>
--
XISPRINTER
.. Syntax
XISPRINTER(<cPrinterName>) -->
.. Arguments
cPrinterName:
.. Files
rtl.lib, source is isprint.c
¿No será que xIsPrinter acepta el parámetro del nombre de la impresora, no del puerto ???
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje news:[email=43873dbe@ozsrvnegro.ozlan.local...]43873dbe@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Pues me quedo pillado...
>
> He revisado el fuente de xIsprinter y veo que utiliza una función del
> Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
> que no se, mirando el MSDN, es si el nombre de la impresora corresponde
> a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
> algo más esto.
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>>
>> MsgInfo( xIsPrinter("LPT1") )
>> MsgInfo( xIsPrinter("LPT2") )
>> MsgInfo( xIsPrinter("LPT3") )
>> MsgInfo( xIsPrinter("LPT4") )
>> MsgInfo( xIsPrinter("LPT5") )
>>
>> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
>> impresora conectada en LPT1
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
>> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>>
>>>Xevi,
>>>
>>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>>
>>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>>
>>>Saludos,
>>>José Luis Capel
>>>
>>>Xevi escribió:
>>>
>>>>Jose,
>>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>>encendida...
>>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>>La respuesta es SIEMPRE la misma F.
>>>>¿Hago algo mal???
>>>> y otra consulta sobre imprimir e interceptar el error...
>>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>>Ya que si mando a imprimir
>>>>SET DEVICE TO PRINTER
>>>>SET PRINTER TO LPT5
>>>>y el puerto no existe
>>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>>Subsistema: TERM
>>>> Código de error: 2014
>>>> Estado: .T.
>>>> Descripción: Create error
>>>> Operación: LPT5.prn
>>>> Argumentos:
>>>> Fichero:
>>>> Código error SO: 2
>>>> Pila de llamadas:
>>>> SET (0)
>>>> MAIN (17)
>>>> Gracias.
>>>> Un Saludo,
>>>>Xevi.
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>>> >
>>>> > Xevi,
>>>> >
>>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>>> >>
>>>> >> Habría algun Wrapper para puertos LOCALES
>>>> >>
>>>> >> Algo como... WLocalGetConnection
>>>> >>
>>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>>no
>>>> >> está disponible intentar localizarlo en la Red.
>>>> >
>>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>>es,
>>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>>bien.
>>>> >
>>>> >
>>>> > --
>>>> > Un saludo,
>>>> >
>>>> > José F. Giménez
>>>> >
>>>> >
>>>> >
>>>
>>
>>
>>
>
--
SET PRINTER
Lo suyo sería, según ayuda de xHarbour...
GETPRINTERS
Retrieve a list of available printers.
.. Syntax
GetPrinters() -->
.. Arguments
[<lPorts>] = .T. or .F. ( default .F. )
.. Returns
A List of available printers.
.. Description
This function retrieves a list of available printers.
.. Examples
CLS
?? 'Test program for WINDOWS printing'
? '---------------------------------'
? 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
return nil
.. Files
source is tprinter.c
Se puede utilizar como parámetro, .T. o .F. por si queremos saber la lista de puertos...
GetPrinters( .T. )
Eso debería devolver un Array con los puertos que tenemos en nuestro Windows...
Bien, pues por lo que veo... GetPrinters() devuelve un Array Vacio!!!
Por lo que respecta a IsPrinter()
ISPRINTER
Determine whether LPT1 is ready
.. Syntax
ISPRINTER() --> lReady
.. Arguments
None
.. Returns
ISPRINTER() returns true (.T.) if LPT1 is ready; otherwise, it returnsfalse (.F.).
.. Description
ISPRINTER() is a printer function that determines whether the parallelport (LPT1) is online and ready to print. ISPRINTER() ishardware-dependent and, therefore, only works on IBM BIOS compatiblesystems.
You can check ISPRINTER() to make sure the printer is ready before youbegin a print operation; however, if an error occurs during the printoperation, a runtime error is generated.
.. Examples
This example tests the parallel port for readiness with up to
25 retries. If the parallel port is ready, the printer operation
begins:
lReady := ISPRINTER()
//
IF lReady
REPORT FORM Sales TO PRINTER
ELSE
? "Printer not ready..."
BREAK
ENDIF
.. Files
Library is rtl.lib, source is isprint.c
Pues desde Xailer... IsPrinter() lanza un GPF
Para que no lanze el GPF, debemos enviar algún parámetro a la Función...
IsPrinter("loquesea")
Pero SIEMPRE devuelve .F.
Si he entendido bien lo que he leído,...
Creo que hay problemas con los puertos LPTs y Xailer
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje news:[email=43873dbe@ozsrvnegro.ozlan.local...]43873dbe@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Pues me quedo pillado...
>
> He revisado el fuente de xIsprinter y veo que utiliza una función del
> Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
> que no se, mirando el MSDN, es si el nombre de la impresora corresponde
> a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
> algo más esto.
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>>
>> MsgInfo( xIsPrinter("LPT1") )
>> MsgInfo( xIsPrinter("LPT2") )
>> MsgInfo( xIsPrinter("LPT3") )
>> MsgInfo( xIsPrinter("LPT4") )
>> MsgInfo( xIsPrinter("LPT5") )
>>
>> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
>> impresora conectada en LPT1
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
>> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>>
>>>Xevi,
>>>
>>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>>
>>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>>
>>>Saludos,
>>>José Luis Capel
>>>
>>>Xevi escribió:
>>>
>>>>Jose,
>>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>>encendida...
>>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>>La respuesta es SIEMPRE la misma F.
>>>>¿Hago algo mal???
>>>> y otra consulta sobre imprimir e interceptar el error...
>>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>>Ya que si mando a imprimir
>>>>SET DEVICE TO PRINTER
>>>>SET PRINTER TO LPT5
>>>>y el puerto no existe
>>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>>Subsistema: TERM
>>>> Código de error: 2014
>>>> Estado: .T.
>>>> Descripción: Create error
>>>> Operación: LPT5.prn
>>>> Argumentos:
>>>> Fichero:
>>>> Código error SO: 2
>>>> Pila de llamadas:
>>>> SET (0)
>>>> MAIN (17)
>>>> Gracias.
>>>> Un Saludo,
>>>>Xevi.
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>>> >
>>>> > Xevi,
>>>> >
>>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>>> >>
>>>> >> Habría algun Wrapper para puertos LOCALES
>>>> >>
>>>> >> Algo como... WLocalGetConnection
>>>> >>
>>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>>no
>>>> >> está disponible intentar localizarlo en la Red.
>>>> >
>>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>>es,
>>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>>bien.
>>>> >
>>>> >
>>>> > --
>>>> > Un saludo,
>>>> >
>>>> > José F. Giménez
>>>> >
>>>> >
>>>> >
>>>
>>
>>
>>
>
--
GETPRINTERS
Retrieve a list of available printers.
.. Syntax
GetPrinters() -->
.. Arguments
[<lPorts>] = .T. or .F. ( default .F. )
.. Returns
A List of available printers.
.. Description
This function retrieves a list of available printers.
.. Examples
CLS
?? 'Test program for WINDOWS printing'
? '---------------------------------'
? 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
return nil
.. Files
source is tprinter.c
Se puede utilizar como parámetro, .T. o .F. por si queremos saber la lista de puertos...
GetPrinters( .T. )
Eso debería devolver un Array con los puertos que tenemos en nuestro Windows...
Bien, pues por lo que veo... GetPrinters() devuelve un Array Vacio!!!
Por lo que respecta a IsPrinter()
ISPRINTER
Determine whether LPT1 is ready
.. Syntax
ISPRINTER() --> lReady
.. Arguments
None
.. Returns
ISPRINTER() returns true (.T.) if LPT1 is ready; otherwise, it returnsfalse (.F.).
.. Description
ISPRINTER() is a printer function that determines whether the parallelport (LPT1) is online and ready to print. ISPRINTER() ishardware-dependent and, therefore, only works on IBM BIOS compatiblesystems.
You can check ISPRINTER() to make sure the printer is ready before youbegin a print operation; however, if an error occurs during the printoperation, a runtime error is generated.
.. Examples
This example tests the parallel port for readiness with up to
25 retries. If the parallel port is ready, the printer operation
begins:
lReady := ISPRINTER()
//
IF lReady
REPORT FORM Sales TO PRINTER
ELSE
? "Printer not ready..."
BREAK
ENDIF
.. Files
Library is rtl.lib, source is isprint.c
Pues desde Xailer... IsPrinter() lanza un GPF
Para que no lanze el GPF, debemos enviar algún parámetro a la Función...
IsPrinter("loquesea")
Pero SIEMPRE devuelve .F.
Si he entendido bien lo que he leído,...
Creo que hay problemas con los puertos LPTs y Xailer
Gracias.
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje news:[email=43873dbe@ozsrvnegro.ozlan.local...]43873dbe@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Pues me quedo pillado...
>
> He revisado el fuente de xIsprinter y veo que utiliza una función del
> Api de Windows ( OpenPrinter ) que abre un 'handle' a la impresora. Lo
> que no se, mirando el MSDN, es si el nombre de la impresora corresponde
> a "LPTx" o no. A ver si algún experto en la materia puede aclararnos
> algo más esto.
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>>
>> MsgInfo( xIsPrinter("LPT1") )
>> MsgInfo( xIsPrinter("LPT2") )
>> MsgInfo( xIsPrinter("LPT3") )
>> MsgInfo( xIsPrinter("LPT4") )
>> MsgInfo( xIsPrinter("LPT5") )
>>
>> SIEMPRE devuelve -1, exista o no el puerto, o esté o no esté lista la
>> impresora conectada en LPT1
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
>> news:[email=438734b0@ozsrvnegro.ozlan.local...]438734b0@ozsrvnegro.ozlan.local...[/email]
>>
>>>Xevi,
>>>
>>>IsPrinter solo funciona con LPT1 y no acepta parámetros.
>>>
>>>Prueba con xIsPrinter("LPTn") y dime se eso te soluciona el problema.
>>>
>>>Saludos,
>>>José Luis Capel
>>>
>>>Xevi escribió:
>>>
>>>>Jose,
>>>> IsPrinter() no me funciona... o no se hacerlo funcionar !!!
>>>> En un ordenador con puerto LPT1, y una impresora conectada y
>>>>encendida...
>>>>MsgInfo( IsPrinter( "LPT1" ) )
>>>>MsgInfo( IsPrinter( "LPT2" ) )
>>>>MsgInfo( IsPrinter( "LPT3" ) )
>>>>MsgInfo( IsPrinter( "LPT1:" ) )
>>>>MsgInfo( IsPrinter( "LPT2:" ) )
>>>>MsgInfo( IsPrinter( "LPT3:" ) )
>>>>La respuesta es SIEMPRE la misma F.
>>>>¿Hago algo mal???
>>>> y otra consulta sobre imprimir e interceptar el error...
>>>> En Clipper existía el objeto oError, que podíamos "interceptar" e
>>>>incluso "modificar" en el prg... ErrorSys.prg.
>>>>¿Cómo podemos interceptar los errores en Xailer/xHarbour???
>>>>Ya que si mando a imprimir
>>>>SET DEVICE TO PRINTER
>>>>SET PRINTER TO LPT5
>>>>y el puerto no existe
>>>>me lanza un error Xailer/xHarbour... y me "saca" de la aplicación
>>>>Subsistema: TERM
>>>> Código de error: 2014
>>>> Estado: .T.
>>>> Descripción: Create error
>>>> Operación: LPT5.prn
>>>> Argumentos:
>>>> Fichero:
>>>> Código error SO: 2
>>>> Pila de llamadas:
>>>> SET (0)
>>>> MAIN (17)
>>>> Gracias.
>>>> Un Saludo,
>>>>Xevi.
>>>> "Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el
>>>>mensaje news:[email=4385fe07@ozsrvnegro.ozlan.local...]4385fe07@ozsrvnegro.ozlan.local...[/email]
>>>> >
>>>> > Xevi,
>>>> >
>>>> >> ¿Como compruebo si el puerto LPT1 local está disponible???
>>>> >>
>>>> >> Habría algun Wrapper para puertos LOCALES
>>>> >>
>>>> >> Algo como... WLocalGetConnection
>>>> >>
>>>> >> Se trataría primero de intentar localizar el puerto localmente y si
>>>>no
>>>> >> está disponible intentar localizarlo en la Red.
>>>> >
>>>> > ¿Has probado IsPrinter() en el puerto local? Podrías usar
>>>> > WNetGetConnection() para comprobar si es un puerto de red, y si no lo
>>>>es,
>>>> > comprobarlo con IsPrinter(). Yo creo que así sí debería funcionar
>>>>bien.
>>>> >
>>>> >
>>>> > --
>>>> > Un saludo,
>>>> >
>>>> > José F. Giménez
>>>> >
>>>> >
>>>> >
>>>
>>
>>
>>
>
--
SET PRINTER
Xevi,
>
> Pues desde Xailer... IsPrinter() lanza un GPF
> Para que no lanze el GPF, debemos enviar algún parámetro a la Función...
> IsPrinter("loquesea")
> Pero SIEMPRE devuelve .F.
>
> Si he entendido bien lo que he leído,...
> Creo que hay problemas con los puertos LPTs y Xailer
>
El problema es de xharbour.
Sería interesante reportar ese fallo en la news de xharbour.
Saludos,
José Luis Capel
>
> Pues desde Xailer... IsPrinter() lanza un GPF
> Para que no lanze el GPF, debemos enviar algún parámetro a la Función...
> IsPrinter("loquesea")
> Pero SIEMPRE devuelve .F.
>
> Si he entendido bien lo que he leído,...
> Creo que hay problemas con los puertos LPTs y Xailer
>
El problema es de xharbour.
Sería interesante reportar ese fallo en la news de xharbour.
Saludos,
José Luis Capel
SET PRINTER
Xevi,
Si he entendido bien lo que he leído,...
Creo que hay problemas con los puertos LPTs y Xailer
En realida el problema no es de Xailer ni de xHarbour. Simplemente, que con windows no se trabaja con los puertos directamente, sino con los dispositivos (en este caso impresoras) que tenga instalados.
Por eso te decía yo el otro día que es mejor hacerlo a la windows, no a la MS-DOS. Utiliza la clase TPrinter (o mejor dicho, el objeto público Printer) para imprimir. Y en el caso de que necesites enviar a la impresora la secuencia de caracteres directamente, sin que los procese el driver, puedes usar el método WriteData().
--
Un saludo,
José F. Giménez
--
Si he entendido bien lo que he leído,...
Creo que hay problemas con los puertos LPTs y Xailer
En realida el problema no es de Xailer ni de xHarbour. Simplemente, que con windows no se trabaja con los puertos directamente, sino con los dispositivos (en este caso impresoras) que tenga instalados.
Por eso te decía yo el otro día que es mejor hacerlo a la windows, no a la MS-DOS. Utiliza la clase TPrinter (o mejor dicho, el objeto público Printer) para imprimir. Y en el caso de que necesites enviar a la impresora la secuencia de caracteres directamente, sin que los procese el driver, puedes usar el método WriteData().
--
Un saludo,
José F. Giménez
--