Copie avec shfileoperation

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 703 fois - Téléchargée 19 fois

Contenu du snippet

Bonjour

Voici un exemple de l'utilisation de la fonction SHFileOperation de l'api windows.

La fonction renvoie true si ok, false sinon ainsi qu'un code d'erreur en cas de problème
ex:
1223 lors de copie sur une clé usb pleine (disque plein)

PB: j'ai eu beau chercher je n'ai trouvé aucune documentation sur les codes
d'erreurs et d'éventuel messages "en clair" correspondants...

Source / Exemple :


#include <ShellApi.h>

(...)

bool ForceCopyFile(AnsiString source, AnsiString cible, int * errcode)
{
   bool res;
   res = false;
   int cr;
   char fsource[MAX_PATH];
   char fcible[MAX_PATH];

  • errcode = 0;
fsource[MAX_PATH]; fcible[MAX_PATH]; memset(fsource, 0, sizeof(fsource)); memset(fcible, 0, sizeof(fcible)); SHFILEOPSTRUCT shf; shf.hwnd = Handle; //Handle de la fenêtre appelante //nb: chaînes avec 2 zéros terminaux ! sprintf(fsource, "%s", source.c_str()); sprintf(fcible, "%s", cible.c_str()); shf.wFunc = FO_COPY; shf.pFrom = fsource; shf.pTo = fcible; shf.fFlags=FOF_SILENT | FOF_NOCONFIRMATION; cr = SHFileOperation(&shf); if (cr==0) res = true; else
  • errcode=cr; //pas documenté ?
return res; }

A voir également

Ajouter un commentaire

Commentaires

ghanmi04_05
Messages postés
20
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
23 mars 2010

Comment arrêter la copy de windows en c++?!
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Qu'est ce que tu entends par "sans provoquer de conflit"?
Quel est selon toi l'intérêt d'utiliser SHFileOperation plutôt que CopyFile?
steph12358
Messages postés
150
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
10 décembre 2009

Salut VECCHIO56

J'ai aussi trouvé ça depuis.

http://www.secretswindows.com/index.php?rubrique=erreurs&page=./erreurs/1000-2099.htm

Je crois que je vais laisser tomber cette fonction. Comme tu l'as fait remarquer les
codes d'erreurs ne sont pas trés parlants...

En fait je cherchais une fonction qui permettait de copier un fichier déjà ouvert par un autre programme sans provoquer de conflit... sinon je vais revenir à mon bête copyfile...tant pis!

A+
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Pour les codes d'erreur :
http://msdn.microsoft.com/en-us/library/bb762164(VS.85).aspx

Apparemment la gestion des erreurs n'est pas super, et on ne peut pas se fier au code retourné par SHFileOperation (on sait juste s'il y a eu une erreur ou non).

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.