Mcopy (utilitaire de copies)

Soyez le premier à donner votre avis sur cette source.

Vue 4 854 fois - Téléchargée 816 fois

Description

Utilitaire de copie se basant sur l'api Windows pour effectuer plusieurs copies à la fois "diffèrentes sources et différentes destinations."
Pensez à inclure la dll WinXPC Engine.ocx dans le répertoire system32 sous le dossier Windows pour rendre les controles similaires à ceux utilisés par windows.
Beaucoups de sources m'ont servi pour élaborer ce petit programme merci à tous leurs auteurs.

Source / Exemple :


Dim cd As New Collection, cs As New Collection
Private Sub Command1_Click()
    Form2.Show vbModal
End Sub

Private Sub Command2_Click()
   Command1.Enabled = False
   get_targets  'charger les ch. destinations dans ds
   copy         'charger les ch. sources dans cs
   delete_files 'effacer les fichiers paths et targets
   
End Sub

Private Sub get_targets()
    Dim id As Integer, i As Long
    Dim ch As String
    
    id = FreeFile
    Open App.Path & "\todo\targets.txt" For Input As #id
        
        'charger la liste des dossiers de destination
        While Not EOF(id)
            Line Input #id, ch
            If ch <> "" Then
                ch = ch & "\"
                i = i + 1
                cd.Add ch, CStr(i)
            End If
        Wend
        
    Close #id
    
    ProgressBar1.Max = CSng(cd.Count)
End Sub

Private Sub copy()
    Dim id As Integer, i As Long, j As Long
    Dim ch As String
    Dim fso As New FileSystemObject
        
    On Error Resume Next
    id = FreeFile
    
    Open App.Path & "\todo\paths.txt" For Input As #id
        
        For Each d In cd
            If EOF(id) = True Then Exit For
            
            Label2.Caption = d
            Label2.Refresh
            
            'remplissage de cs
            ch = "initiale"
            j = 0
            While ch <> ""
                Line Input #id, ch
                If ch <> "" Then
                    j = j + 1
                    cs.Add ch, CStr(j) 'key utilisé pour vider cs : le seul moyen qui ne provoque pas d'erreur
                End If
            Wend
            
            'copier des ch. sources dans cs
            j = 0
            ProgressBar2.Max = CSng(cs.Count)
            For Each s In cs
                Label1.Caption = s
                Label1.Refresh
                
                If fso.FileExists(s) = True Then fso.CopyFile s, d
                If fso.FolderExists(s) = True Then fso.CopyFolder s, d
                j = j + 1
                DoEvents
                ProgressBar2.Value = CSng(j)
                ProgressBar2.Refresh
            Next
            
            'vider cs
            For j = 1 To cs.Count
                cs.Remove CStr(j)
            Next
            
            i = i + 1
            DoEvents
            ProgressBar1.Value = CSng(i)
            ProgressBar1.Refresh
        Next
        
    Close #id
    
    'vider la collection des ch. destination
    For i = 1 To cd.Count
        cd.Remove CStr(i)
    Next
            
    Command2.Enabled = False
    Command1.Enabled = True
End Sub

Private Sub delete_files()
    Kill App.Path & "\todo\paths.txt"
    Kill App.Path & "\todo\targets.txt"
End Sub

Private Sub Command3_Click()
    MsgBox "MultiCopy pour Xp" & vbCrLf & "Version : 1.3" & vbCrLf & "Programmation: cdc1604" & vbCrLf & "e-mail : mbenthebet@gmail.com", vbInformation, "A propos"
End Sub

Private Sub Form_Load()
    Dim ch As String
    
    'Si l'un au moins des fichiers existe le supprimer
    
    ch = App.Path & "\todo\paths.txt"
    If Dir(ch) = "paths.txt" Then
        Kill ch
    End If
    
    ch = App.Path & "\todo\targets.txt"
    If Dir(ch) = "targets.txt" Then
        Kill ch
    End If
    
    WindowsXPC1.InitSubClassing
End Sub

Conclusion :


L'outil est dans sa première version... Si vous l'essayez veuillez reporter les bugs rencontrés. Toutes vos remarques sont les bienvenues.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
63
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 octobre 2011

Bon au moins, ça marche...
Même si tout programme peut être amélioré.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Désolé pas le temps, je bosse autour de 300h/mois en ce moment !
Je trouve à peine le temps de répondre.

Mais tu peux regarder ma source OpenGED. J'y utilise l'API. Il faut juste dépouiller tout le reste.

Bonne prog
++
Messages postés
17
Date d'inscription
dimanche 15 avril 2007
Statut
Membre
Dernière intervention
5 juin 2009

Bouv si tu peux aider vas-y modifies ce qu'il y'a à modifier pour améliorer l'app.Je bosses en ce moment et le temps me manque vraiement.
Ajoute ton e-mail et ton pseudo si tu veux aussi dans la boite de message à propos.
Merci
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Nathan>>Faux, Faux et Faux.
- Windows permet lui de faire du vrai multi-copy
- Windows est presque 2 fois plus rapide dans ce genre de tâches
- La barre de progression de Windows est beaucoup plus précise

Les 2 derniers point peuvent facilement être résolus avec l'API CopyFileEx.

Pour le vrai multi-copy, c'est pas gagné, comme dit plus haut il faudrait passer en VB.Net

Cependant, ce point n'est pas très grave car les performances sont bien moins bonnes car cela oblige le disque dur à écrire à plusieurs endroits en même temps... et bonjour la fragmentation...
Messages postés
63
Date d'inscription
mardi 11 novembre 2008
Statut
Membre
Dernière intervention
31 octobre 2011

J'oubliais...

Je n'ai rencontré aucun bug dans toutes ses utilisations.
J'espère ne rien oublier d'autre...
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cdc1604)