begin process at 2012 02 14 06:15:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > MCOPY (UTILITAIRE DE COPIES)

MCOPY (UTILITAIRE DE COPIES)


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :utilitaire, systemes fichiers, controls, api Niveau :Débutant Date de création :11/02/2009 Date de mise à jour :21/02/2009 15:09:50 Vu / téléchargé :3 395 / 548

Auteur : cdc1604

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   mCopy
    • todo
    • Form1.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier9 491 octets
    • Form1.frxTélécharger ce fichier [Réservé aux membres club]428 322 octets
    • Form2.frmTélécharger ce fichier [Réservé aux membres club]Voir ce fichier15 245 octets
    • Form2.frxTélécharger ce fichier [Réservé aux membres club]57 346 octets
    • Module1.basTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 994 octets
    • MSSCCPRJ.SCCTélécharger ce fichier [Réservé aux membres club]340 octets
    • MultyCopyTélécharger ce fichier [Réservé aux membres club]98 304 octets
    • MultyCopy.vbpTélécharger ce fichier [Réservé aux membres club]Voir ce fichier966 octets
    • MultyCopy.vbwTélécharger ce fichier [Réservé aux membres club]Voir ce fichier131 octets
    • VB6FR.DLLTélécharger ce fichier [Réservé aux membres club]119 568 octets
    • WinXPC Engine.ocxTélécharger ce fichier [Réservé aux membres club]172 032 octets

Télécharger le zip


 Historique

11 février 2009 17:27:08 :
Remerciments
21 février 2009 12:21:31 :
Cette mise à jour incorpore l'utilisation de la fonction api CopyFileEx de la dll kernel32.dll. Je tiens à remercier nathan pour ces encouragements et Bouv pour les informations pertinentes qu'il m'a fournis. L'application est certes plus rapide que la précédente.
21 février 2009 12:25:34 :
aperçu
21 février 2009 12:26:05 :
a
21 février 2009 12:28:36 :
ajout de capture
21 février 2009 12:29:17 :
ajout de capture
21 février 2009 15:09:51 :
l'affichage est désormais modal de la boite de dialogue destination

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MODIFIER LES EXTENSION DES FICHIERS par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture FILE,SECURITY,FICHIER par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PATCHEUR DE FICHIER par tototh
Source avec Zip Source avec une capture LECTURE DES INFORMATIONS DES DISQUES COMPOSANT UN ENSEMBLE R... par jack

 Sources en rapport avec celle ci

Source avec Zip COMMUNICATION MODBUS MASTER par sergelapointe
Source avec Zip Source avec une capture AFFICHEUR TYPE DIGITAL AVEC AVEC L'API SETBITMAPBITS par oeildedinde
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip Source avec une capture Source .NET (Dotnet) CALCUL DU PRIX D'UN TRAJET EN VOITURE. par Satir34
Source avec Zip Source avec une capture [VBA] EXCEL - UNE CALCULATRICE SUR UN USERFORM par lermite222

Commentaires et avis

Commentaire de bouv le 12/02/2009 08:41:26

Je suis déçu, la source ne correspond pas à la description :
- les fichiers sont copiés un par un
- tu utilise FSO (beurk) et non les API windows

Commentaire de Patrice99 le 12/02/2009 12:16:33

Et quel avantage par rapport à un copié/collé depuis l'explorateur de fichiers ?

Commentaire de cdc1604 le 12/02/2009 18:06:19

C'est une première version...
Dès que je maitriserai les threads c'est certain l'app sera mise à jour.
Fso c'est l'api windows sous vb6.Les solutions qui se proposent seront de programmer soi même une api (cas de supercopier)ce que je ne suis pas actuellement capable de faire.
Lorsqu'on a +eurs copies à effectuer.C'est mieux de les programmer une fois pour toute que d'attendre qu'une copie se termine pour lancer une autre...
Si vous pouvez donner un coup de main, n'hésitez pas...
Merci

Commentaire de bouv le 12/02/2009 18:24:03

Je suis pas tout à fait d'accord : FSO n'est pas une API. Ce n'est qu'une "interface" qui se repose sur des API windows pour manipuler le system de fichier. Et les performances s'en ressentent grandement ! (très grandement)

Dans TOUS les cas de figure, FSO est à proscrire. Et il est toujours possible de faire sans !

Pour faire un copier/coller avec les API windows voir l'utilisation de CopyFileEx fournie par kernel32.dll

Pour ce qui est des threads, je te conseil d'oublier... tant que tu sera sous VB6. Tu peux en revanche passer en VB.net qui gère cela très bien.

Commentaire de cdc1604 le 13/02/2009 11:54:10

merci pour la dll; je vais l'essayer
si tu en connais d'autres n'hésites surtout pas...

Commentaire de nathansecret le 17/02/2009 11:03:07

Ce logiciel est excellent.
Et il a une qualité par rapport à celui de Windows : il peut copier plusieurs fichiers en même temps plus rapidement.
Merci cdc1604

;D

Commentaire de nathansecret le 17/02/2009 11:05:10 10/10

J'oubliais...

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

Commentaire de bouv le 17/02/2009 11:46:41

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...

Commentaire de cdc1604 le 17/02/2009 17:15:35

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

Commentaire de bouv le 17/02/2009 18:14:56

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
++

Commentaire de nathansecret le 19/02/2009 18:52:08

Bon au moins, ça marche...
Même si tout programme peut être amélioré.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

GetEnvironmentVariable [ par Boldor ] Bonjour,Je voudrai recuperer la valeur des variables d'environnement a partir d'un programme VB.Comment utiliser la fonction GetEnvironmentVariable ?Y les API windows [ par Mskine ] Où je peux trouver des informations,definitions, conseils, des fonctions APIMerci d'avance API [ par CyrilB ] Je voudrais pouvoir fermer une fenêtre MS-DOS même si celle-ci est en cours d'execution.Il y a une fonction API qui fait ça mais je ne sais plus laque Proprietes des fichiers ss NT 4.00 \ Utilisation des fonctions API [ par Xavier ] En fouillant dans l'aide des API, j'ai trouve quelques fonctions pouvant resoudre mon probleme.Qui peut me dire comment faire appel aux fonctions :Get API pour icônes [ par Xaviou ] Salut,Je suis à la recherche d'une API pour afficher la boite de dialogue de changement d'icône (boite que l'on peut obtenir, lorsque l'on regarde les API SHGetFileInfo [ par Xaviou ] Salut,quelqu'un saurait-il comment utiliser l'API SHGetFileInfo ? Pour ma part, c'est le bide complet.J'attends vos réponses avec impatience.@+Xaviou Menu avec icone [ par Xaviou ] Salutje recherche l'API pour intégrer des incones dans mes menus. J'ai trouvé une API (ModifyMenu) qui permet de remplacer le caption d'un menu par un Fonctions API [ par Yvan ] Une petite question : les fonctions API fonctionnent-elles de la même façonsur Win 95, Win 98 et Win NT ?Si je prends comme exemple la fonction GetVo Lecteurs disponibles [ par Yvan ] Salut,Je cherche le moyen de connaître les lettres des lecteurs qui se trouvent sur un ordinateur. Ce qui doit se faire avec les API selon moi. Et s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales