begin process at 2010 03 22 00:48:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

API

 > 

Copie de fichier via l'API


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Copie de fichier via l'API

mardi 21 décembre 2004 à 18:54:50 | Copie de fichier via l'API

syl2

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;

public class Files{

public enum FO : int
{

FO_COPY = 2,
FO_DELETE = 3,
FO_MOVE = 1,
FO_RENAME=4,
FOF_CONFIRMMOUSE = 0x2,
FOF_ALLOWUNDO = 0x40,
FOF_FILESONLY = 0x80,
FOF_MULTIDESTFILES = 0x1,
FOF_NOCONFIRMATION = 0x10, //Don't prompt the user.;
FOF_NOCONFIRMMKDIR = 0x200,
FOF_NO_CONNECTED_ELEMENTS = 0x1000,
FOF_NOCOPYSECURITYATTRIBS = 0x800,
FOF_NOERRORUI = 0x0400,
FOF_RENAMEONCOLLISION = 0x8,
FOF_SILENT = 0x4,
FOF_SIMPLEPROGRESS = 0x100,
FOF_WANTMAPPINGHANDLE = 0x20,
FOF_WANTNUKEWARNING = 0x2000,
FOF_NORECURSION = 0x1000
}

[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é ?

Slyv

mardi 21 décembre 2004 à 19:15:50 | Re : Copie de fichier via l'API

coq

Administrateur CodeS-SourceS
Réponse acceptée !
ben normalement tu peux mettre le fond gris avec la balise [*Code][*/Code] (sans les *)

sinon j'ai essayer ton code et quand je repond non il ne fait pas la copie


Cocoricoooooooo !!!!
coq
MVP Visual C#
mardi 21 décembre 2004 à 20:48:41 | Re : Copie de fichier via l'API

syl2

Salut le coq,

ok pour les balides, quand je clique sur le bouton ça donne rien, c'est pour ça ^^ je le saurais pour la prochaine fois !!!

Quand à l'API, ben merci de m'avoir fait remarqué que j'étais bête !!!!

Parce que en faite voilà ce que faisais mon code :

testcopie = files.CopyFile(openFileName.ToString(),exedir+"\\"+name);
if(copie==0)
{
...
}
this.planningDS.ReadXml(openFileName.ToString());

donc forcément que ça changeais dans mon dataset ^^ (alors que j'attendais le contraire)

Merci mille fois, lol.

Slyv


Cette discussion est classée dans : fichier, public, fo, fof, shf


Répondre à ce message

Sujets en rapport avec ce message

Pb avec mon programme - help... [ par adrien78 ] Voici les sources de mon programme il bug :// project created on 09/11/2002 at 10:51// By Adrien HADJ SALAH// http://www.informatick.com// Pour me rem [C#] CopyTo => Pb de copy [ par adrien78 ] J' ai absolument besoins de récréer la fonction CopyTo en C#=> Cependant j' ai deux pb : - Le fichier copié ne peut pas être lu (érreur de copie ouvrir fichier [ par FaustVII ] je souhaiterai ouvrir un fichier a partir de mon programme (par exemple avec un bouton)j ai tenter d' utiliser file.open mais sans successi quelqu un Executer.... [ par CracK ] Je cherche à associer à un bouton par exemple la fonction qui me permetterai d'executer un fichier txt, mpg ou autres .... private void button1_Click [C#] Nom de fichier dans un textBox [ par jeffwow ] Donc, j'ouvre un fichier avec OpenFileDailog... jusque là ça va. Ensuite, je voudrais prendre le nom de ce fichier et l'envoyer dans un textBox. tex Accès [ par fredza ] Bonjour et bonne année à toutes et tous,J'ai un fichier ip.cs voilà brièvement son contenu :namespace iprog{ /// /// Description résumée de ip. /// affichier le name d'un fichier dans un label [ par testicool ] ki peux me donner une fonction csharp qui me renvoie le nom d'un fichier que j'ai ouvert(System.IO.Stream strInput = openFileDialog1.OpenFile();...... *?!$... de ressources [ par Xaviou ] 'Lu à tous.J'ai un problème avec les ressources.Je voudrais compiler quelques icones avec mon éxécutable, afin de pouvoir les réutiliser lors de l'éxé compression de fichier [ par eryk17 ] bjrje cherche un script qui me permettrait de compresser un fichiermerci acces fichier [ par bloos ] salut a tous,je voudrais savoir comment fait-on pour lire un caractère saisi situé dans un fichier .Merci pour votre aide


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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 : 0,484 sec (3)

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