[..] Savoir si un fichier est ouvert ou non.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
[..] Savoir si un fichier est ouvert ou non.
Bonjour,
Pour faire suite à ce message :
http://autoitscript.fr/forum/viewtopic.php?f=21&t=6440
Pensez-vous qu'il soit possible ou non de vérifier en boucle si un fichier est ouvert ou non, sans passer par une méthode qui ouvre le fichier pour contrôler.
Merci
Eric
Pour faire suite à ce message :
http://autoitscript.fr/forum/viewtopic.php?f=21&t=6440
Pensez-vous qu'il soit possible ou non de vérifier en boucle si un fichier est ouvert ou non, sans passer par une méthode qui ouvre le fichier pour contrôler.
Merci
Eric
- zeshrek
- Niveau 10

- Messages : 984
- Enregistré le : mer. 17 nov. 2010 09:31
- Localisation : Sur ma chaise
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
IMHO a ce moment là il faut te plonger dans la doc de l'OS.
Quand un fichier est ouvert, il doit y avoir un flag qqpart qui l'indique sinon, il ne pourrait pas d'indiquer que tel est le cas. Par contre ou est ce flag et comment le lire, puis ensuite comment l'interpréter ...
Quand un fichier est ouvert, il doit y avoir un flag qqpart qui l'indique sinon, il ne pourrait pas d'indiquer que tel est le cas. Par contre ou est ce flag et comment le lire, puis ensuite comment l'interpréter ...
Si vis pacem para bellum
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour zeshrek,
Effectivement j'ai aussi cherché ce genre d'infos dans le registre ou ailleurs mais pour l'instant je n'ai rien trouvé.
Effectivement j'ai aussi cherché ce genre d'infos dans le registre ou ailleurs mais pour l'instant je n'ai rien trouvé.
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
bonjour
Apparemment, la valeur "inusecount" de CIM_LogicalFile ou de CIM_DataFile n'a pas l'air d'être alimentée. ( c'est du moins ce qu'on peut lire partout après une petite recherche ).
Par contre,j'ai lu un truc intéressant au passage sur cette idée de vouloir tester un fichier avant de l'ouvrir :
source
Apparemment, la valeur "inusecount" de CIM_LogicalFile ou de CIM_DataFile n'a pas l'air d'être alimentée. ( c'est du moins ce qu'on peut lire partout après une petite recherche ).
Par contre,j'ai lu un truc intéressant au passage sur cette idée de vouloir tester un fichier avant de l'ouvrir :
source
In general, you should always avoid relying on file accessibility checks. The reason is that it might be, and then it may change just a couple of cycles before you access it.
Instead, just try to open it and see if you have any errors.
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour sksbir,
J'avoue ne pas avoir tout compris à la méthode.
Est-ce qu'un petit exemple de code serait possible ?
Merci
J'avoue ne pas avoir tout compris à la méthode.
Est-ce qu'un petit exemple de code serait possible ?
Merci
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Le plus simple, serait de nous décrire le process exact de votre interrogation.
Pourquoi voulez-vous tester aussi souvent si un fichier est ouvert ?
Quel en est l'action ou l'événement en découlant ?
Si nous avons l'ensemble des données de votre problème, peut être pourrons nous vous apporter une solution ou une alternative.
Pourquoi voulez-vous tester aussi souvent si un fichier est ouvert ?
Quel en est l'action ou l'événement en découlant ?
Si nous avons l'ensemble des données de votre problème, peut être pourrons nous vous apporter une solution ou une alternative.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour,
Je vais essayer de résumer le process que je voudrais réaliser.
J'ai un logiciel de dessin technique (pour info il peut y en avoir plusieurs, AutoCAD, AutoCAD LT, ZWCAD...) qui une fois ouvert lance un script écrit dans un langage propre au logiciel.
Ce script effectue des opérations en boucle de type :
- Ouvrir un fichier
- Effectuer une série d'opérations
- Fermer le fichier
- Ouvrir un autre fichier
- Effectuer une série d'opérations
- Fermer le fichier
Etc.
Le but ici est d'ajouter une progressbar qui va évoluer par rapport au nombre de fichiers restant. (En sachant que je connais la liste des fichiers à traiter)
Comme je n'ai pas vraiment la main sur ce qui se passe dans le logiciel de dessin, je pensais vérifier si le fichier était ouvert ou non.
- C'est à dire que je prends le nom et le chemin du premier fichier, je vérifie en boucle si il est ouvert ou non.
- Tant que le fichier est fermé rien ne se passe
- Dès que le fichier est ouvert, la progressbar évolue
- Je prends ensuite le nom et le chemin du second fichier, je vérifie en boucle si il est ouvert ou non.
etc.
Voilà pourquoi je voulais tester l'ouverture d'un fichier en boucle mais si vous avez une autre solution je suis preneur
Merci
Je vais essayer de résumer le process que je voudrais réaliser.
J'ai un logiciel de dessin technique (pour info il peut y en avoir plusieurs, AutoCAD, AutoCAD LT, ZWCAD...) qui une fois ouvert lance un script écrit dans un langage propre au logiciel.
Ce script effectue des opérations en boucle de type :
- Ouvrir un fichier
- Effectuer une série d'opérations
- Fermer le fichier
- Ouvrir un autre fichier
- Effectuer une série d'opérations
- Fermer le fichier
Etc.
Le but ici est d'ajouter une progressbar qui va évoluer par rapport au nombre de fichiers restant. (En sachant que je connais la liste des fichiers à traiter)
Comme je n'ai pas vraiment la main sur ce qui se passe dans le logiciel de dessin, je pensais vérifier si le fichier était ouvert ou non.
- C'est à dire que je prends le nom et le chemin du premier fichier, je vérifie en boucle si il est ouvert ou non.
- Tant que le fichier est fermé rien ne se passe
- Dès que le fichier est ouvert, la progressbar évolue
- Je prends ensuite le nom et le chemin du second fichier, je vérifie en boucle si il est ouvert ou non.
etc.
Voilà pourquoi je voulais tester l'ouverture d'un fichier en boucle mais si vous avez une autre solution je suis preneur
Merci
Modifié en dernier par eric le lun. 07 mars 2011 11:15, modifié 1 fois.
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour
Si le script en question enregistre les modifications qu'il a fait dans le fichier en question, alors tu peux utiliser la date de modification du fichier plutôt que de savoir si le fichier est ouvert.
Par ailleurs, c'est pas une bonne idée amha de partir sur la notion de fichier ouvert : suppose un instant que ton script autocad ouvre et referme un des fichiers à traiter avant que ton programme de surveillance ait effectué une boucle : le programme de surveillance aura pas vu passer l'étape, et continuera à "surveiller" le fichier alors que le script autocad sera passé à autre chose depuis bien longtemps.
Si le script en question enregistre les modifications qu'il a fait dans le fichier en question, alors tu peux utiliser la date de modification du fichier plutôt que de savoir si le fichier est ouvert.
Par ailleurs, c'est pas une bonne idée amha de partir sur la notion de fichier ouvert : suppose un instant que ton script autocad ouvre et referme un des fichiers à traiter avant que ton programme de surveillance ait effectué une boucle : le programme de surveillance aura pas vu passer l'étape, et continuera à "surveiller" le fichier alors que le script autocad sera passé à autre chose depuis bien longtemps.
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour sksbir,
Le script n'enregistre pas forcément les modifications donc la date du fichier ne change pas à chaque fois.
Pour la rapidité en général le programme fait par Autoit analysera le fichier plus rapidement qu'AutoCAD (ou autre) n'effectuera sa série d'opérations.
Mais dans l'absolue effectivement ça pourrais même si c'est quand même très peu probable.
Mais je suis ouvert à d'autres propositions aussi.
Le script n'enregistre pas forcément les modifications donc la date du fichier ne change pas à chaque fois.
Pour la rapidité en général le programme fait par Autoit analysera le fichier plus rapidement qu'AutoCAD (ou autre) n'effectuera sa série d'opérations.
Mais dans l'absolue effectivement ça pourrais même si c'est quand même très peu probable.
Mais je suis ouvert à d'autres propositions aussi.
- sksbir
- Niveau 7

- Messages : 384
- Enregistré le : lun. 26 oct. 2009 17:57
- Localisation : Lyon
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
ok ok 
Le plus élégant serait tout de même de modifier les scripts que tu veux surveiller afin d'y rajouter l'affichage de cette fameuse barre de progression.
Sinon, dans la mesure où tu connais le process qui "attaque" tous ces fichiers, alors tu pourrais essayer de voir du coté des handles qu'ouvre ce process.
--> http://forum.sysinternals.com/topic7773.html
Et après ça, je suis à sec d'idées
Le plus élégant serait tout de même de modifier les scripts que tu veux surveiller afin d'y rajouter l'affichage de cette fameuse barre de progression.
Sinon, dans la mesure où tu connais le process qui "attaque" tous ces fichiers, alors tu pourrais essayer de voir du coté des handles qu'ouvre ce process.
--> http://forum.sysinternals.com/topic7773.html
Et après ça, je suis à sec d'idées
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
FileGetTime() peut aussi permetre de connaitre le dernier acces (voir doc)
Signez ici
-
eric
- Niveau 5

- Messages : 177
- Enregistré le : sam. 21 mars 2009 17:57
- Localisation : Bretagne
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Bonjour Iste,
L'idée est bonne sauf que le dernier accès ne fonctionne pas avec tous les type de fichiers je crois. (Je ne sais pas pourquoi d'ailleurs)
Et en l'occurrence pour ces types de fichiers, la date ne change pas lorsqu’on l'ouvre.
L'idée est bonne sauf que le dernier accès ne fonctionne pas avec tous les type de fichiers je crois. (Je ne sais pas pourquoi d'ailleurs)
Et en l'occurrence pour ces types de fichiers, la date ne change pas lorsqu’on l'ouvre.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Savoir si un fichier est ouvert ou non.
Quelques idées en vrac :
- Éditer le script lancé par les programmes pour rajouter une option d'écriture du nom du fichier en cours de modification.
- Vérifier le titre de la fenêtre des applications à la recherche du nom du fichier.
- Voir les processus et les handles associés afin de connaitre le fichier utilisé.
- Éditer le script lancé par les programmes pour rajouter une option d'écriture du nom du fichier en cours de modification.
- Vérifier le titre de la fenêtre des applications à la recherche du nom du fichier.
- Voir les processus et les handles associés afin de connaitre le fichier utilisé.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
