Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2008
Lorena83 Lorena83 is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
Lorena83 Va por buen camino
Capturar escritura a fichero de otra aplicación

Hola a todos !!

Quiero realizar una aplicación que analice ficheros log de texto plano en tiempo real de aplicaciones de terceros. El caso es que no quiero hacer que mi programa compruebe periódicamente el fichero log para comprobar si ha sufrido modificaciones sino que de alguna manera "se enganche" a él y detecte inmediatamente cuando se ha escrito en él y el contenido añadido sin tener que releer el fichero de texto desde el principio.

Alguien puede echarme una mano con alguna sugerencia.

Saludos.
Lorena
Responder Con Cita
  #2  
Antiguo 24-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Lorena83 Ver Mensaje
Hola a todos !!

Quiero realizar una aplicación que analice ficheros log de texto plano en tiempo real de aplicaciones de terceros. El caso es que no quiero hacer que mi programa compruebe periódicamente el fichero log para comprobar si ha sufrido modificaciones sino que de alguna manera "se enganche" a él y detecte inmediatamente cuando se ha escrito en él y el contenido añadido sin tener que releer el fichero de texto desde el principio.

Alguien puede echarme una mano con alguna sugerencia.

Saludos.
Lorena
Se me ocurre que puedes comprobar la fecha de modificación/escritura del archivo (API GetFileTime, parámetro lpLastWriteTime), al cambiar el mismo recien verificas los cambios en el contenido del archivo.

Saludos
Responder Con Cita
  #3  
Antiguo 25-03-2008
Lorena83 Lorena83 is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
Lorena83 Va por buen camino
Ok, me parece una buena idea en cuanto me ahorro el examinar detalladamente el archivo para detectar posibles cambios (añadiduras), pero sigue siendo necesario tener un temporizador que compruebe periódicamente los cambios de la fecha de modificación. Y es que odio los temporizadores . Me suenan a programación cutre.

Existe alguna manera (callback creo que sería la denominación apropiada) de que el sistema notifique a mi aplicación el cambio del fichero que estoy monitorizando.

Un saludo
Responder Con Cita
  #4  
Antiguo 25-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Lorena83 Ver Mensaje
...Y es que odio los temporizadores . Me suenan a programación cutre...
Pues las herramientas que el S.O. pone a disponibilidad del desarrollador no debiesen ser "discriminadas" solo por un "sentimiento". A mi tampoco me agradaban los Timers, solo utilizaba hilos, pero ahora se que ambos tienen su lugar dado un determinado caso.

Cita:
Empezado por Lorena83 Ver Mensaje
...Existe alguna manera (callback creo que sería la denominación apropiada) de que el sistema notifique a mi aplicación el cambio del fichero que estoy monitorizando.
Puedes utilizar la API FindFirstChangeNotification con el parámetro FILE_NOTIFY_CHANGE_LAST_WRITE (dentro de un hilo), sobre la carpeta que contiene el archivo en cuestión. Luego realizar la verificación de última escritura sobre el archivo y la comprobación de contenido.

La última forma es hacer un hook a la API de escritura en el proceso que accede al archivo. Y algo mas global sería hacer un hook a nivel de Driver; pero ambos casos son mucho mas complicados.

Saludos
Responder Con Cita
  #5  
Antiguo 26-03-2008
Lorena83 Lorena83 is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
Lorena83 Va por buen camino
Cita:
Pues las herramientas que el S.O. pone a disponibilidad del desarrollador no debiesen ser "discriminadas" solo por un "sentimiento". A mi tampoco me agradaban los Timers, solo utilizaba hilos, pero ahora se que ambos tienen su lugar dado un determinado caso.
Te pido disculpas si te he ofendido con mi manera de decir la cosas. En realidad al decir "programación cutre" quería decir que se trataba de una solución que no consideraba óptima ya que entiendo que de esa manera se produce un gasto inutil de recursos, si partimos de que el proceso lanzado por el temporizador se repite continuamente cuando seguramente no es preciso.

Cita:
Puedes utilizar la API FindFirstChangeNotification con el parámetro FILE_NOTIFY_CHANGE_LAST_WRITE (dentro de un hilo), sobre la carpeta que contiene el archivo en cuestión. Luego realizar la verificación de última escritura sobre el archivo y la comprobación de contenido.
Esta solución, en cambio, es mucho más cercana a lo que busco ya que es posible optimizar el consumo de recursos.

Muchas gracias por tu ayuda.
Responder Con Cita
  #6  
Antiguo 26-03-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Lorena83 Ver Mensaje
Te pido disculpas si te he ofendido con mi manera de decir la cosas...
Para nada Lorena83, el que talvez se expreso de una forma inadecuada fui yo y solo quise difundir un pensamiento (al igual que tu).

Cita:
Empezado por Lorena83 Ver Mensaje
Muchas gracias por tu ayuda.
Para servirte.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
copiar fichero desde otra maquina karla Varios 2 17-10-2006 10:04:57
¿Se puede capturar los datos de un puerto serie de otra aplicación? NPIdea Varios 2 06-06-2006 13:45:19
Capturar datos desde un fichero .pdf taita Varios 0 19-10-2005 01:03:26
capturar datos de otra ventana (una pregunta dificil ;-D ) Angel API de Windows 1 01-08-2003 15:44:37


La franja horaria es GMT +2. Ahora son las 20:36:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi