Scan dd

cs_erwan35 Messages postés 57 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 21 avril 2006 - 29 janv. 2004 à 11:30
cs_erwan35 Messages postés 57 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 21 avril 2006 - 29 janv. 2004 à 13:57
Bonjour à tous!

Tout d'abord je souhaite remercier Jujufouq pour sa source que j'ai réutilisé.

En fait, je veux parcourir tous les fichiers de C:\ et je veux qu'il m'indique dans label1 le nom du fichier parcouru, mais j'ai l'impression que c'est trop rapide, ça bouffe toute la ressource, rien n'apparit dans le label1.

Que faire?

Autre question, comment faire pour arrêter le scan en cours avec un bouton de commande?

Voici le code:

Dim fso As New FileSystemObject

Private Sub Command1_Click()
    On Error Resume Next
    
    Scan "C:"

End Sub

Private Sub Scan(DossierEnCours As String)
    On Error Resume Next
    
    '#Déclarations
    Dim Dossier As Folder
    Dim SousDossier As Folder
    Dim Fichier As File
    Dim nomfichier As String
    
    '#Affectations
    Set Dossier = fso.GetFolder(DossierEnCours)
    
    '#Exécution
        
        'Fichiers
            For Each Fichier In Dossier.Files
                Label1.Caption = Fichier.Path
            Next Fichier
        'Dossiers
            For Each SousDossier In Dossier.SubFolders
                Label1.Caption = SousDossier.Path
                Scan SousDossier.Path & ""
            Next SousDossier

End Sub

3 réponses

cs_BFR Messages postés 88 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 1 mars 2008
29 janv. 2004 à 12:08
Salut
c'est une des solutions qui existe pour interrompre une boucle tu peut utiliser cela:

'A COLLER DANS UN MODULE

'-INTERROMPRE UNE BOUCLE DO***********************

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public Const VK_ESCAPE = &H1B'Touche échappement
Public Const VK_LBUTTON = &H1'Clic gauche
Public Const VK_RBUTTON = &H2'Clic droit

'-INTERROMPRE UNE BOUCLE DO FIN*******************

'APPEL A METTRE DANS LA BOUCLE
For Each Fichier In Dossier.Files

Doevents'-Redonne la main à windows

If GetAsyncKeyState(VK_ESCAPE) < 0 Or GetAsyncKeyState(VK_LBUTTON) < 0 Then
Exit Do
End If

Next SousDossier

A++ BFR
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
29 janv. 2004 à 12:27
Ton problème vient de la priorité de ton programme : tant qu'il n'a pas fini, il prendra toutes les ressources. Pour éviter cela, place un "DoEvents" dans tes boucles pour permettre au système de reprendre la main à chaque tout de boucle, et ainsi mettre à jour ton interface.

Pour exemple concret de ce type de manipulation, va voir ma source nommée Defillement copie dossier : j'affiche les fichiers en cours de copie dans un contrôle Label...

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
cs_erwan35 Messages postés 57 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 21 avril 2006
29 janv. 2004 à 13:57
Excellent!
Je ne connaissais pas cette fonction!
Je pense que j'aurai l'occasion de m'en resservir!
Merci à vous 2!

Erwan
0
Rejoignez-nous