FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola,
En realidad a mí me parece que no hay forma de saber si un archivo está abierto o qué, a no ser que la aplicación que lo abra lo haga "de forma exclusiva". En este caso tal vez uno podría comprobar si el archivo, efectivamente, fue abierto de esa forma, dicho mal y pronto. Pero, si la aplicación que abre un archivo (y es lo normal) no lo abre de forma exclusiva, ya digo, puedo estar equivocado, pero, ¿cómo podría averiguarse que el archivo en cuestión está abierto? Te pondré un ejemplo. Una aplicación de Delphi cuenta con un "TMemo" en el que carga el contenido de un archivo. La aplicación lee el archivo, y pone su contenido en el "TMemo". Y ahí se acaba todo. El archivo puede incluso eliminarse a continuación, que, el contenido del mismo seguirá en el "TMemo". Si otra aplicación quiere saber si la mía abrió el archivo de marras, ¿cómo iba a hacerlo? Última edición por dec fecha: 04-12-2008 a las 17:34:51. |
#2
|
||||
|
||||
Yo pensé en los atributos del documento en ese momento... como cuando abres dos veces un archivo de excell te dice en "modo de solo lectura", quizá el se refiera a eso...
|
#3
|
||||
|
||||
Hola,
No sabía de esto último que dices Felipe. Aunque, probablemente, Excel abra el archivo "de forma exclusiva", y así luego puede averiguar si el archivo está abierto de esa forma: aunque sea por la propia aplicación, de modo que lo abra como "sólo lectura". Lo cierto es que tampoco te creas que estoy muy puesto en este asunto. Pero lo que hace Excel tiene su lógica, para evitar ediciones en un archivo que ya está abierto "de forma exclusiva", por el mismo Excel o por otra aplicacion. Pero, esto lo hace Excel... mas no todas las aplicaciones lo hacen. Me parece que es al contrario: lo normal es abrir archivos no de forma exclusiva, sino leer su contenido y ponerlo a disposición del usuario, pero, dejar el archivo donde estaba y como estaba. Pero, creo que me estoy yendo por las ramas. |
#4
|
||||
|
||||
Cita:
Saludos |
#5
|
||||
|
||||
Hola,
El asunto está en determinar qué entendemos por un archivo "en uso". Si yo desde Delphi abro para leerlo un archivo de texto y lo cargo en un "TMemo", ese archivo realmente no está "en uso". Simplemente lo abrí, lo leí y ya está. Para que pueda considerarse que un archivo está usándose, hasta donde yo llego, una aplicación ha de abrir el archivo en cuestión "en modo exclusivo", tal como apunta también el compañero Escafandra. En este caso Windows no dejaría mover el archivo abierto "en exclusiva" por una aplicación. Al menos hasta donde yo llego. |
#6
|
||||
|
||||
Claro Dec... de acá en adelante depende es del modo en como "usen" esos archivos los otros programas...
|
#7
|
||||
|
||||
Cita:
Esto es posible porque se ha utilizado FILE_SHARE_DELETE al momento de abrir el archivo... que sucede? al ser borrado o eliminado el archivo los datos siguen allí intactos lo único que cambia son las entradas de ROOT o de MFT en el sistema de archivos. Cita:
El S.O. bloquea por alguna razón lógica un archivo, y es necesario forzar el acceso al mismo por cualquier motivo... para ello la mejor herramienta que puedo nombrar de la telaraña es "Unlocker" de Cedrick Collomb. Por qué es tan eficaz dicha herramienta? sin ánimos de quitar el encanto y la excelente calidad del trabajo de Collomb, comentaré que dicha herramienta funciona basada en dos APIs (ObReferenceObjectByHandle & ObfDereferenceObject) las cuales a nivel de núcleo (S.O.) desbloquean los archivos a voluntad y de la mejor forma posible. Lo anteriormente dicho es solo con fines informativos pues no tenemos el permiso del autor para crear una librería basada en su trabajo, pero si podemos apoyarnos en otras APIs que nos facilitaran el trabajo; adjunto un ejemplo que dará la idea de lo que digo:
La anterior aplicación de consola muestra todos los archivos abiertos y los programas que han abierto a dichos archivos y puede adaptarse para otros fines . Es claro que no tiene el “poder” de Unlocker, pero es un precedente para aplicaciones a nivel de usuario que requieran de dichas funcionalidades. Saludos |
#8
|
||||
|
||||
Cita:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ClientdataSet como saber si esta abierto? | Coco_jac | Varios | 4 | 13-04-2012 19:36:43 |
Cómo saber si un fichero esta marcado de sólo lectura ? | David | Varios | 2 | 13-08-2008 16:20:19 |
¿Está abierto un fichero? | Wellnic | API de Windows | 1 | 14-06-2008 14:07:14 |
Saber si un puerto esta abierto | Besto | Varios | 12 | 10-10-2007 16:30:00 |
Saber si esta abierto un documento Word | Investment | Servers | 2 | 13-05-2004 12:02:26 |
|