cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 2005
-
21 déc. 2004 à 18:54
cs_syl2
Messages postés49Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention 7 juillet 2005
-
21 déc. 2004 à 20:48
Bonjour,
Au sein de mon application, j'offre à l'utilisateur la possibilité d'importer des fichiers XML. Le fichier qui va être importé peut déjà exister dans mon dossier contenant l'exe de l'application. Ainsi, j'ai donc choisi d'utiliser l'API Windows pour copier des fichiers, avoir la fenêtre de demande de confirmation en cas d'existence du fichier à copier ...
Le code ci dessous fonctionne mais il y a quelque chose que je n'arrive pas à faire :
Quand je copie le fichier toto du dossier1 dans le dossier2, si le fichier toto existe déjà, je vais avoir la fenêtre de confirmation de remplacement comme celle de Windows ... mais que je cliques sur Oui je veux remplacer ou Non je ne veux pas remplacer, la copie s'effectue quand même ... ce qui pose bien évidemment un problème.
Le code de sotie de fonction n'est quand à lui pas le même : 0 si je clique sur oui je veux remplacer, 7 si j'ai cliquer sur non.
J'aimerais donc pouvoir faire que si je clique sur Non, cela ne copie pas le fichier ...
Merci par avance à tous ceux qui pourront m'éclairer
using System;
using System.IO;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto, Pack=1)]
public struct SHFILEOPSTRUCT
{
public IntPtr hwnd;
public int wFunc;
public string pFrom;
public string pTo;
public short fFlags;
public long fAnyOperationsAborted;
public long hNameMappings;
public string lpszProgressTitle;
}
[DllImport("shell32.dll", CharSet=CharSet.Auto)]
public static extern int SHFileOperation(ref SHFILEOPSTRUCT FileOp);
public void CopyFile(string pFrom, string pTo)
{
long retval;
SHFILEOPSTRUCT shf = new SHFILEOPSTRUCT();
shf.wFunc = (int)FO.FO_COPY;
shf.fFlags = (int)FO.FOF_ALLOWUNDO;
shf.pFrom = pFrom+'\0'+'\0';
shf.pTo = pTo + '\0' + '\0';
Console.WriteLine(shf.fAnyOperationsAborted.ToString());
retval = SHFileOperation(ref shf);
if (retval != 0)
Console.WriteLine(retval + "Move Operation Failed");
else if (shf.fAnyOperationsAborted!=0)
Console.WriteLine(shf.fAnyOperationsAborted + "Operation Aborted");
Console.WriteLine(retval);
}
}
Ps : c normal que je ne puisse pas mettre mon code sur fond grisé ?