[..] Surveiller l'arrivée de nouveau fichier dans un dossier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
yannosh
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 03 oct. 2007 22:11
Localisation : Reims
Status : Hors ligne

[..] Surveiller l'arrivée de nouveau fichier dans un dossier

#1

Message par yannosh »

Bonjour, je cherche a afficher une image en plein écran au moment ou elle est copié dans un dossier.

Aprés quelques recherches j'en suis la :

Code : Tout sélectionner

$dateplusrecent = 0
$fichierplusrecent = ""
FileChangeDir("D:\tofo")

$search = FileFindFirstFile("*.JPG")  

If $search = -1 Then
        SplashImageOn("Boo", "d:\tofo\1\error.JPG" ,@DesktopWidth ,@DesktopHeight , "", "", 1)
        Sleep(2200)
    EndIf

While 1
    $file = FileFindNextFile($search)
    $datefichier = FileGetTime($file,0,1)
            if $datefichier > $dateplusrecent then
                $dateplusrecent = $datefichier
                $fichierplusrecent = $file
                SplashImageOn("Boo", $fichierplusrecent ,100 ,200 , "", "", 1)
                Sleep(2200)
                
            EndIf
    
WEnd
Ca m'affiche bien toute les photos que j'ai dans le dossier mais si j'en rajoute une sans relancer le prog ca ne l'affiche pas.
Auriez vous une idée ?
Merci !
Avatar du membre
pop45
Membre émérite
Membre émérite
Messages : 251
Enregistré le : dim. 30 août 2009 16:18
Status : Hors ligne

Re: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#2

Message par pop45 »

Alors dans ce cas le meilleur moyen serait de faire un Adlibenable qui verifirait s'il y a un nouveau fichier dans le dossier a l'aide de filefindfirstfile et filefindnextfile, quand vous affichez les image, vous pouvez poser leur nom dans une variable a 1 dimension (ex: "dim $image[25])
ou sinon, vous déplacez les image afficher dans un sous dossier afin qu'elles ne soit pas pris en compte par les fonction filefindfirstfile et filefindnextfile qui serait appelles par l'adlibenable
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
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: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#3

Message par zeshrek »

C'est normal qu'il detecte pas les nouveaux fichiers.
Rajoute un 'do' AVANT la ligne
$search = FileFindFirstFile("*.JPG")
et un 'loop' apres le wend final et ca devrait mieux se passer.

Si tu lui dis pas de scanner le répertoire de temps en temps, il reste sur son premier scan.
là, tu scanne, la première fois il t'affiche les photos, ensuite, il passera son temps a scanner et boucler en faisant rien, sauf si une nouvelle image arrive.
Met éventuellement une sortie par hotkey....
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11818
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#4

Message par Tlem »

Je pense qu'il serait plus judicieux d'utiliser un UDF déjà tout fait : FileSystemMonitor

L'avantage de cet UDF est qu'il permet de surveiller complètement un dossier. Certes, la gestion est plus lourde qu'une simple boucle, mais sur le principe, ce sera plus évolutif et stable.

Pour simplifier l'utilisation de l'UDF, il vous suffit de surveiller l'apparition d'un nouveau fichier, ensuite de vérifier son extension et enfin de faire l'action désirée.
Regardez le fichier d'exemple afin de le simplifier. ;)
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é".
yannosh
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 03 oct. 2007 22:11
Localisation : Reims
Status : Hors ligne

Re: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#5

Message par yannosh »

Bonjour,

merci a tous, je m'en suis sorti comme ca :
► Afficher le texte
Ce que je voudrai faire maintenant , c'est afficher une image quand on viens de la rajouter.
En fait, on a un appareil photo qui envoie les photo dans un dossier, le but étant de faire défiler les images (ca , ca marche) mais au moment ou une photo arrive dans le dossier, l'afficher et revenir au slide ensuite ....

Je continu de chercher mais je dois avouer que je suis encore plus perdu que précédemment !
yannosh
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 03 oct. 2007 22:11
Localisation : Reims
Status : Hors ligne

Re: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#6

Message par yannosh »

c bon , c'est dans la poche, je donne le script au cas ou :)

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.0.0
 Author:         yann

 Script Function:
    slide soirée scripto.

#ce ----------------------------------------------------------------------------

;init des variables
$dateplusrecent = 0
$fichierplusrecent = ""
$last = ""
$nb = 0
FileChangeDir("D:\tofo")
;liste des fichier au lancment
$search = FileFindFirstFile("*.JPG")  
    

HotKeySet("²", "slide")
HotKeySet("{ESC}", "Terminate")

;;;; Body of program would go here ;;;;
While 1
    Sleep(2000)
    slide()
WEnd

Func lastFile()
$last = $fichierplusrecent
$nb = StringMid($last, 5, 4)
;MsgBox(4096, $fichierplusrecent, "je save cette image et le chiffre "&$nb)
EndFunc

Func newImg()
    If FileExists("D:\tofo\DSC_"&$nb+1&".JPG") Then
        SplashImageOn("Boo", "D:\tofo\DSC_"&$nb+1&".JPG" ,1920 ,1275 , "", "", 1)
        Sleep(2200)
        ;SplashOff()
        $nb = $nb+1
    EndIf
EndFunc

Func slide()
    
    
    ;si pas de fichier trouvé, affiche image erreur
    If $search = -1 Then
        SplashImageOn("Boo", "d:\tofo\1\error.JPG" ,@DesktopWidth ,@DesktopHeight , "", "", 1)
        Sleep(2200)
    EndIf
    
    $file = FileFindNextFile($search)
    If @error Then 
        ;MsgBox(0, "no photo", "clode")
        FileClose($search)
        Sleep(2200)
        ;MsgBox(0, "no photo", "reset")
        $search = FileFindFirstFile("*.JPG")
        $dateplusrecent = 0
        lastFile()
    EndIf
    $datefichier = FileGetTime($file,0,1)
    if $datefichier > $dateplusrecent then
        $dateplusrecent = $datefichier
        $fichierplusrecent = $file
        SplashImageOn("Boo", $fichierplusrecent ,1920 ,1275 , "", "", 1)
        Sleep(2200)
        ;SplashOff()
        newImg()
    EndIf    
    
;MsgBox(0, "sortie", "while")

EndFunc

Func Terminate()
    Exit 0
EndFunc



 
Merci encore pour l'aide donnée plus haut ;)
yannosh
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mer. 03 oct. 2007 22:11
Localisation : Reims
Status : Hors ligne

Re: [..] Surveiller l'arrivée de nouveau fichier dans un dossier

#7

Message par yannosh »

ReBonjour :)

Une derniere ptite chose,
entre chaque splash on passe pas le bureau, est qu'il y a moyen de ne pas afficher le bureau entre chaque image ?

Merki !
Répondre