![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
![]() ![]() Que onda!! Gracias por responder... Sabes que encontre el motivo de porque sale ese error... Estuve programando el xeyes en otra aplicacion y me di cuenta que tambien le pasa lo mismo.... Y Yo creo que es por las propiedades del objeto mouse.curpos.X y mouse.curPos.y..... Ya que en los dos utilizo el acceso a las propiedades del mouse.... Cualquiera que quiera intentarlo para probar lo que les dijo.. pongan un timer que se este ejecutando muy rapido para que este leyendo estas propiedades del mouse....claro en una lap con windows 7..no se si pase lo mismo en una pc...
y traten de suspenderla y entrar otra vez a su session y el error se produce luego restaurada la session ...La verdad no se como proceder ... |
|
#2
|
||||
|
||||
|
¡Pues claro que falla, jomío! ¿A quién se le ocurre utilizar un "timer" para leer la posición del ratón?
Si es que...Después de la bronca, te recomiendo que replantees la aplicación. Casi es mejor que utilices un bucle (cuasi)infinito para hacer esto. Lo que no tengo muy claro es dónde colocarlo, pero sería tal que así:
Como digo, el problema aquí reside en desde dónde llamar al método "BuclePrincipal". ![]()
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#3
|
|||
|
|||
|
Cita:
Por lo que entiendo, el problema lo tiene cuando se cierra la sesión y no finaliza el programa. Por lo que imagino, lo que ocurre es que el programa de LuisAlf no puede acceder a los datos del mouse, porque este está deshabilitado para la sesión o algo similar. Por tanto, la solución sería capturar la salida de sesión (no sé como), y si se sale de sesión, parar de leer las coordenadas. O quizá con un bloque try..finally se solucionaría todo... |
|
#4
|
|||
|
|||
|
Cita:
![]() Mira exacto!!! No hay ningun problema al utilizar un timer para este objetivo, ya que es un procedimiento que se llama cada determinado tiempo y es exactamente lo que tu me planteaste un procedimiento que lee las posiciones del cursor...cada cierto tiempo... Esto ya lo habia contemplado, ya que un amigo me dijo algo de manejo de la excepcion... para encapsular el error y si...por hay fue mi solucion, yo batallando con la suspension de la sesion...jajaja mal enfoque del problema ![]() Asi es lo que hice ayer fue eso, manipule el evento manejador de excepciones creando un procedimento de tipo object, y que creen lo que puse en el procedure... pues "nada" ![]() jajaja Dejenme explicarme, lo que pasa es que puse un showmessage en el procedimento para ver si encapsulaba el error que me mostraba windows y si efectivamente el showmessage se muestra en lugar de las otras ventanas del error que el propio windows me mostraba... Y como yo no quiero que muestre ningun mensaje pues le quite el showmessage... de esta forma el error no se muestra y la aplicacion sola se estabiliza, trabajando correctamente despues de restaurada la sesion.... No se si sea la forma mas ortodoxa de solucionarlo pero funciona.... ![]() ![]() Última edición por LuisAlf:: fecha: 19-10-2010 a las 17:24:53. |
|
#5
|
||||
|
||||
|
Pues, precisamente, en que el timer puede "activarse" fuera de contexto (que es lo que sospecho que le pasa a nuestro compañero LuisAlf:
. No se puede garantizar que las interrupciones se produzcan en un momento determinado: se producirán cuando se produzcan y ya está.Un ejemplo práctico es el procedimiento "Sleep". Tú le puedes decir que duerma durante 100 milisegundos, pero nada garantiza que exactamente 100 milisegundos después el sistema devuelva el control al programa. No sé cómo implementa los timer Delphi (supongo que usando MSG_TIMER del API, y posiblemente con un hilo [fork] paralelo) pero las posibilidades de que pase lo mismo son importantes. No olvidemos, tampoco, que Windows no es un sistema operativo de "tiempo real", como sí lo es MS-DOS, por ejemplo. Si se quiere utilizar un timer, habrá de asegurarse de eliminarlo antes de que se salga del contexto, o al menos evitar que funcione si está fuera de él. Se me ocurre que antes de obtener las coordenadas del ratón, quizá se pueda comprobar si el objeto "mouse" o el contenedor del mismo sigue existiendo. Algo así como:
O quizá usar "SELF" o "Application" en lugar de "mouse". <-- Evitar doble post --> Cita:
Aunque funcionar, funcionar... El problema aquí es que si se produce otro error, entonces no te enterarás... Quizá sea buena idea dejar constancia de los errores en algún sitio, como por ejemplo en un archivo de disco, por si las moscas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#6
|
|||
|
|||
|
Cita:
Pues la verdad no se me habia ocurrido lo del mouse<>nil Creo que tambien podria funcionar!!, voy a intentarlo, en cuanto a los errores, no cre oque se produzca otro error importante, yo creo que en este era en lo que estaba batallando y ya funciona bien... jjaja Gracias!!! |
|
#7
|
|||
|
|||
|
No, lo del mouse<>nil no funciona...
Lo que pasa es que el "objeto" o referencia si esta creado, el problema es que no se puede acceder a las propiedades antes mencionadas... Hablando del procedimiento que no hace nada, es posible encapsular nada mas el error EOeserror del objeto mouse, en el parametro "e" del procedimiento, y no hacer nada con el... |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Mensaje Inicio Sesion windows XP | cacu | Windows | 3 | 19-02-2009 16:57:31 |
| Obtener id de la Sesion de Windows | pedrnsanmar | API de Windows | 4 | 13-05-2008 16:32:11 |
| Bloqueo de sesión Windows XP | Val | API de Windows | 2 | 11-10-2007 08:23:10 |
| Cerrar sesion Windows XP | Caral | Windows | 9 | 19-09-2006 00:42:34 |
| Sesion (de Windows) Oculta | Jose_Pérez | Redes | 1 | 25-06-2005 16:43:08 |
|