pb ExamineDirectory aller dans les sous répertoires

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
david
Messages : 208
Inscription : jeu. 03/févr./2005 21:10

pb ExamineDirectory aller dans les sous répertoires

Message par david »

je veux scanner les fichiers d'un lecteur (ExamineDirectory fonctionne très bien)
et je colle la liste dans le bloc note pour traitement ultérieur des informations

le problème c'est pour lui dire d'aller chercher aussi dans les sous-dossiers... puisque je veux l'intégralité des fichiers quelque soit le nb de sous dossiers

si quelqu'un peu m'aider
voici mon code actuel

Code : Tout sélectionner

; ****************************************************************************************
; ************************ PROCEDURE EMULATION TOUCHES ***********************************
; ****************************************************************************************
Procedure SendKeys(handle,window$,keys$)
    If window$<>"" : handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle.
    If IsWindow_(handle)=0 ; Does the target window actually exist?
        ProcedureReturn 0 ; Nope, so report 0 for failure to type.
    Else
        ; This block gives the target window the focus before typing.
        thread1=GetWindowThreadProcessId_(GetForegroundWindow_(),0)
        thread2=GetWindowThreadProcessId_(handle,0)
        If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf
        SetForegroundWindow_(handle) ; Target window now has the focus for typing.
        Delay(125) ; 1/8 second pause before typing, to prevent fast CPU problems.
        ; Now the actual typing starts.
        For r=1 To Len(keys$)
            vk$=Mid(keys$,r,1)
            If vk$="{" ; Special key found.
                s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key.
                s$=Mid(keys$,r+1,s) ; Get special key name.
                Select s$ ; Get virtual key code of special key.
                    Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down.
                    Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT.
                    Case "BACKSPACE" : vk=#VK_BACK
                    Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down.
                    Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL.
                    Case "DELETE" : vk=#VK_DELETE
                    Case "DOWN" : vk=#VK_DOWN
                    Case "END" : vk=#VK_END
                    Case "ENTER" : vk=#VK_RETURN
                    Case "F1" : vk=#VK_F1
                    Case "F2" : vk=#VK_F2
                    Case "F3" : vk=#VK_F3
                    Case "F4" : vk=#VK_F4
                    Case "F5" : vk=#VK_F5
                    Case "F6" : vk=#VK_F6
                    Case "F7" : vk=#VK_F7
                    Case "F8" : vk=#VK_F8
                    Case "F9" : vk=#VK_F9
                    Case "F10" : vk=#VK_F10
                    Case "F11" : vk=#VK_F11
                    Case "F12" : vk=#VK_F12
                    Case "ESCAPE" : vk=#VK_ESCAPE
                    Case "HOME" : vk=#VK_HOME
                    Case "INSERT" : vk=#VK_INSERT
                    Case "LEFT" : vk=#VK_LEFT
                    Case "PAGEDOWN" : vk=#VK_NEXT
                    Case "PAGEUP" : vk=#VK_PRIOR
                    Case "PRINTSCREEN" : vk=#VK_SNAPSHOT
                    Case "RETURN" : vk=#VK_RETURN
                    Case "RIGHT" : vk=#VK_RIGHT
                    Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down.
                    Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT.
                    Case "TAB" : vk=#VK_TAB
                    Case "UP" : vk=#VK_UP
                EndSelect
                If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT"
                    keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key.
                EndIf
                r=r+s+1 ; Continue getting the keystrokes that follow the special key.
            Else
                vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found.
                If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character.
                keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key.
                If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character.
            EndIf
        Next
        If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
        keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key if user forgot.
        keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key if user forgot.
        keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key if user forgot.
        ProcedureReturn 1 ; Report successful typing! :)
    EndIf
EndProcedure 
; ****************************************************************************************
; ************************ FIN PROCEDURE ****************************************************
; ****************************************************************************************







Directory$="C:\"
Repertoire$ = InputRequester("Quel est le nom du disque a scanner?", "Chemin a modifier si nécessaire puis OK", Directory$)
Extension$  = "*.*" 
BlocNote$="Sans titre - Bloc-notes"




RunProgram("notepad.exe")
Delay(500):NPID = GetForegroundWindow_() ;va chercher le numéro de la fenêtre active

If ExamineDirectory(0, Repertoire$, "*.*")  
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        Type$ = "[F]" ;fichier
      Else
        Type$ = "[R] " ;repertoire
      EndIf
    ;  If Type$ = "[F]":Debug DirectoryEntryName(0):EndIf
      If Type$ = "[F]":SendKeys(NPID,BlocNote$,DirectoryEntryName(0)) :SendKeys(NPID,BlocNote$,"{ENTER}") :EndIf
           Wend
           FinishDirectory(0)
      
  EndIf
 MessageRequester("info","le programme est maintenant terminé")
   
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: pb ExamineDirectory aller dans les sous répertoires

Message par Ar-S »

Cette page entre autres :
http://www.purebasic.fr/french/viewtopi ... ivit%C3%A9

Fait une recherche avec le terme récursivité.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre