RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN RIEN

florenth - 18 juil. 2007 à 14:58
 florenth - 15 août 2008 à 13:17
Merci pour ton appréciation Nicolas !
Et super ta technique pour surveiller un lecteur entier !
nicolassalocin Messages postés 1 Date d'inscription jeudi 14 août 2008 Statut Membre Dernière intervention 15 août 2008
15 août 2008 à 11:54
Bonjour,
Toutes mes félicitations pour ce code ! Bravo !
Pour répondre aux commentaires de Encore1ben du 18/08/2007 00:53:20 de florenth du 18/08/2007 11:30:08 relatifs à la surveillance de c: j'ai fais les tests suivants :
1) Surveillance de "C:" KO
2) Surveillance de "C:" KO
3) Surveillance "C:\." OK !!! Toutes manipulations sur le bureau par exemple est bien vue !
Merci à vous
sebcbien_bzh Messages postés 16 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 19 juin 2015
23 août 2007 à 12:17
le code semblait conveir a ce que je cherchait : on a un serveur ftp avec des fichier de toute taille : 1 ko à 600 mo... et je veux pouvoir avertir par mail de l'arrivée de telle fichier.
je voulais donc utiliser ton soft sous windows 2000 - delphi 7.
la surveillance marche par contre il ne dit jamais quand un fichier est véritablement terminé car la modification et la fermeture d'un fichier sont dans la meme rubrique, donc les personnes ne savent pas quand le fichier est vraiment fini d'uploader : ce qui est ce que je cherche...
il n'y aurait pas une astucce ? j'ai cherché en regadant si un fichier est en cours d'utilisation mais l'informatique va tellement vite sur les petit fichier que cela ne marche pas... de plus je ne suis pas sur mais j'ai l'impression que le serveur ftp ouvre et ferme le fichier constamment,donc :

* soit il faut vérifier si le fichier a bougé depuis admettons les 10 dernieres secondes, et cela grace à une fonction de delphi,
* soit pour un fichier donné "modifié" vérifier si le fichier est toujours en crous d'écriture mais je n'ai pas réussi : le moment où le fichier est dis modifié et ensuite le moment où on vérifie est tellement proche que même si l'écriture est fine, la vérification via un reset et l'analyse de l'erreur , cela nous dit que le fichier est toujours en cours d'écriture, au pire il faut faire une liste de fichier modifié et les tester via un timer quelques dizaines de secondes apres...
* soit faire un scan de chaque dossier et voir les nouveaux fichiers et parmi ceux la ceux dont la taille change (on ne peux utiliser ton source)
* soit bien analyser le log du serveur ftp, mais avec les multiples clients qui se connecte en meme temps c'est pas le top...

donc si vous avez une solution.

ps : je n'ai pas retrouvé la page sur le site microsoft, mais il m'a semblé lire que ReadDirectoryChangesW sous windows 2000 ne donnait pas des infos correctes à 100%.
Salut !
En effet, je viens de rencontrer ce problème...
En fait, cela ne vient pas (à mon avis) du fait que ce soit la racine du lecteur qui soit observée.
Je crois plutôt que certains dossiers "spéciaux" de Windows (bureau, mes documents, ma musique, mes images, peut être même fonts et autres..) ne peuvent être observés par leur parent.

En gros: pour observer C:\Docs & Settings\user\Mes documents et ses sous-dossiers, il faut absolument mettre le chemin complet. Si tu mets C:\, ça ne marchera pas. Donc pour pouvoir observer réellement un dossier, il faudrait vérifier que celui-ci ne contienne pas de dossiers spéciaux. Dans le cas échéant, il faudrait lancer en parallèle une deuxième analyse pour couvrir cette zone d'ombre.
Enfin, je dis ça... c'est juste le fruit de mes observations.

Il faudrait vérifier mais il ne me semble pas que la doc msdn dise quelque chose sur le sujet... :-(
Encore1ben Messages postés 68 Date d'inscription jeudi 19 septembre 2002 Statut Membre Dernière intervention 22 février 2008
18 août 2007 à 00:53
Bonjour,

Super code ! C'est propre et efficace... Bravo !

Par contre, c'est bizarre mais l'application ne fonctionne pas sur la racine de mon disque dur C: !???? J'ai beau créer des dossier sur mon bureau (donc sur c:\documents and settings\utilisateur\bureau\), l'application ne repère rien !!! Par contre, dans un autre dossier, il gère bien les sous dossiers et leurs contenus ! Bizarre, non !????
roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 2
26 juil. 2007 à 20:31
Bonjour Florenth

Super ton code! Comme je ne savais pas que cette API existait, j'était obligé de scanner en permanence un dossier pour savoir si un enregistrement TV était en cours... Avec ta unit, ça sera plus propre.
En plus ton code est très propre et d'après mes premiers essais il répond à mon besoin. Il faut maintenant que j'essaye avec Vista.

Merci Florenth et merci Delphifr

Roud59
Bon, je me permet de recommenter un p'tit coup pour une précision importante:

Vous n'aurez que les notifications qui interviennent pendant l'exécution de votre programme. Si vous voulez avoir la liste complète de ce qui s'est passé entre deux exécutions du programme, il faut :

- Déjà, que le système de fichiers soit journalisé (ntfs seulement - fat32 ne le permet pas)
- Que vous trifouillez avec les journaux USN, c'est à dire avec l'API DeviceIOControl (chose pas simple à faire).

Voila c'est tout ! Bonne surveillance donc !
Le code part du principe que vous avez accès au dossier ainsi qu'a ses fichiers. Je n'ai pas surchargé le code de conditions de vérifications qui n'en finiraient plus si ce n'est pas le cas.
Rejoignez-nous