![]() |
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. :confused: Saludos. Lorena |
Cita:
Saludos |
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 :D. 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 |
Cita:
Cita:
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 |
Cita:
Cita:
Muchas gracias por tu ayuda. |
Cita:
Cita:
|
Hola Lorena83.
Bueno... esto va para Delphi si es que estás programando con este lenguaje. Mira... Hay un curioso componente que viene en Delphi 7 que se llama ShellChangeNotifier que pasa inadvertido por la mayoría de nosotros, ya que no viene documentado por Delphi y Borland nunca se ha referido en palabras o comentarios hacia este, Es como un componente para que uno lo empiece a descubrir. La razón, no lo se... Este componente se encuentra por defecto en la pestaña Samples del IDE de Delphi 7. Así mismo nos cuenta y plantea nuestro amigo George Merriman de delphi.about.com http://delphi.about.com/od/vclusing/l/aa052403a.htm Ahí encontrarás documentación y un ejemplo en código fuente. Espero que sea lo que buscabas y planteabas ;) Cordiales saludos. |
Sí, es otra solución. Nunca había prestado atención a esos componentes. De hecho creo que se basa en las funciones API que hemos estado comentando.
Por otro lado, quiero seguir rizando el rizo. Imaginemos que usamos FindFirstChangeNotification/NextChangeNotification con FILE_NOTIFY_CHANGE_LAST_WRITE para detectar los archivos modificados. Pero ¿ como haríaris para detectar cuales de ellos realmente han sido alterados ? ¿ Conoceis alguna función que permita obtenerl sus nombre p.e. directamente ? Porque una manera de hacerlo sería tener la fecha de modificación de todos los archivos del directorio que estemos monitorizando y cuando salta la función que hemos diseñado comprobar una por una las fechas de modificación para ver cual fue alterada. Esto funcionaría bien pero en un directorio con miles de archivos puede ser poco eficiente. No sé si me he explicado. Alguna sugerencia ?? Un saludo. |
La franja horaria es GMT +2. Ahora son las 05:43:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi