[..] Savoir si un fichier est ouvert ou non.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
eric
Niveau 5
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.

#1

Message par eric »

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
Avatar du membre
zeshrek
Niveau 10
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.

#2

Message par zeshrek »

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 ... :?
Si vis pacem para bellum
eric
Niveau 5
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.

#3

Message par eric »

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é.
Avatar du membre
sksbir
Niveau 7
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.

#4

Message par sksbir »

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
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
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.

#5

Message par eric »

Bonjour sksbir,

J'avoue ne pas avoir tout compris à la méthode.

Est-ce qu'un petit exemple de code serait possible ?

Merci
Avatar du membre
Tlem
Site Admin
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.

#6

Message par Tlem »

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.
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é".
eric
Niveau 5
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.

#7

Message par eric »

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 :wink:

Merci
Modifié en dernier par eric le lun. 07 mars 2011 11:15, modifié 1 fois.
Avatar du membre
sksbir
Niveau 7
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.

#8

Message par sksbir »

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.
eric
Niveau 5
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.

#9

Message par eric »

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.
Avatar du membre
sksbir
Niveau 7
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.

#10

Message par sksbir »

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 :lol:
Avatar du membre
Iste
Niveau 11
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.

#11

Message par Iste »

FileGetTime() peut aussi permetre de connaitre le dernier acces (voir doc)
Signez ici
eric
Niveau 5
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.

#12

Message par eric »

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.
Avatar du membre
Tlem
Site Admin
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.

#13

Message par Tlem »

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é.
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é".
Répondre