Shfileoperation : une dll vb pour une utilisation simplifiée.

Description

L'utilisation du FileSystemObject pour les opérations sur des fichiers ou des dossiers de taille conséquente présente un inconvénient : l'application cesse de répondre jusqu'à la fin des opérations, ce qui suscite chez l'utilisateur une impression de "plantage". L'utilisation de la fonction SHFileOperation pallie cet inconvénient grâce à la boîte de dialogue Windows affichant la progression des opérations.

La DLL proposée dans cette source effectue les opérations de copie, déplacement, changement de nom et suppression de fichiers ou de dossiers. Pour cela elle ajoute dans VB les fonctions FileOpCopy, FileOpMove, FileOpDelete et FileOpRename.

Arguments obligatoires : descripteur (hwnd) de la form propriétaire, chemin du dossier ou du fichier source, dossier de destination pour les opérations de copie et de déplacement.

Arguments optionnels : demandes de confirmations de l'utilisateur et affichage des détails (nom des fichiers en cours de traitement).

Valeurs renvoyées : Vrai si toutes les opérations se sont déroulées sans incident, Faux si une ou plusieurs opérations ont fait l'objet d'un échec ou d'une annulation.

L'option "affichage de la boîte de progression" (Flag "FOF_SILENT") n'est pas paramétrable sinon autant utiliser FileSystemObject. L'option "annulable" (Flag "FOF_ALLOWUNDO") est sélectionnée d'office (elle permet de récupérer les objets supprimés dans la corbeille).

La source se compose du projet DLL VbSHFileOperation et d'un projet de test TestShFileOp.vbp.

Intérêt pratique : simplicité d'utilisation.

Intérêt pédagogique : en commentaire dans le projet de test, des conseils de mise en oeuvre pour les débutants, et un module permettant l'affichage de la boîte de dialogue Windows "Rechercher un dossier" sans utiliser le contrôle VB DirListBox.

Limitations :

Cette DLL, créée pour mon usage personnel dans un cadre déterminé, ne permet pas l'utilisations des Flags "FOF_FILESONLY" (utilisation de *.* dans les noms de fichiers), "FOF_MULTIDESTFILES" (Destinations multiples), "FOF_NOCONFIRMMKDIR" (Annulation de la demande de confirmation pour la création de dossier) et "FOF_RENAMEONCOLLISION" (Changer le nom d'un fichier copié ou déplacé si un fichier de même nom existe déjà).

Créé et testé uniquement dans Windows 2000

Codes Sources

A voir également

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.