IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Copier/coller/delete un dossier directement sur le bureau !


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut Copier/coller/delete un dossier directement sur le bureau !
    Bonjour à toutes et à tous,

    J'ai deux applications sur ma clé Usb, dès l'introduction de cette clé, (malgré la fenêtre options) j'exécute la 1ère et avec celle-çi je devrai copier la 2ième directement sur le bureau.

    Ensuite, toujours avec la 1ère je devrai pouvoir deleter la deuxième qui se trouve sur le bureau.

    Pour fermer la 2ième depuis la 1ère, c'est Ok.

    J'utilise la structure SHFILEOPSTRUCT mais comment désigner le Desktop.

    Y a t'il une solution ?

    Merci,

    @+,

    Cincap

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 666
    Points : 25 463
    Points
    25 463
    Par défaut
    tu dois pouvoir t'en sortir avec SHGetSpecialFolderLocation ou SHGetFolderPath
    On a discuté de cela récemment sur le forum !

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut
    @ ShaiLeTroll, justement j'avais aussi essayé avec cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function LocalAppDataPath : string;
    const
       SHGFP_TYPE_CURRENT = 0;
    var
       path: array [0..MAX_PATH] of char;
    begin
       SHGetFolderPath(0,CSIDL_LOCAL_APPDATA,0,SHGFP_TYPE_CURRENT,@path[0]) ;
       Result := path;
    end;
    Mais sans résultat, en fait ce que j'aimerai réaliser c'est comme si je sélectionnais mon application et son dossier, les copier dans le pressepapier puis les coller directement sur le bureau (Ctrl+C, Ctrl+V).

    Mais....

    Merci pour ta suggestion.

    @+,

    Cincap

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 666
    Points : 25 463
    Points
    25 463
    Par défaut
    As-tu essayé avec CSIDL_DESKTOP ou CSIDL_DESKTOPDIRECTORY ou encore SHGetDesktopFolder ?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut
    @ ShaiLeTroll, oui, voici mon code pour copier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Var
    EDD : String ;
    begin
     // CopyFolder('Data', 'c:\Data')
     EDDirectory.Text:=SpecialFolder(CSIDL_DESKTOP)+'\';
     EDD := EDDirectory.Text ;
     CopyFolder(Edsource.text, EDD) ;
     CopyFolder(Edlogiciel.text, EDD) ;
    Cela est ok mais pour effacer, on dirait que lorsqu'il y a quelque chôse dans le dossier que cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Var
    EDD : String ;
    begin
     EDDirectory.Text:=SpecialFolder(CSIDL_DESKTOP)+'\';
     EDD := EDDirectory.Text ;
     if DirectoryExists(EDD + Edsource.text) then removeDir(EDD + Edsource.text);
    end;
    Je vais tester avec cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    Function DelTree(DirName : string): Boolean;
    var
      SHFileOpStruct : TSHFileOpStruct;
      DirBuf : array [0..255] of char;
    begin
      try
       Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
       FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
       StrPCopy(DirBuf, DirName) ;
       with SHFileOpStruct do begin
        Wnd := 0;
        pFrom := @DirBuf;
        wFunc := FO_DELETE;
        fFlags := FOF_ALLOWUNDO;
        fFlags := fFlags or FOF_NOCONFIRMATION;
        fFlags := fFlags or FOF_SILENT;
       end; 
        Result := (SHFileOperation(SHFileOpStruct) = 0) ;
       except
        Result := False;
      end;
    end;
    Cela devrait fonctionner.

    Edit : Je confirme cela fonctionne.

    Je ferme ce topic, grand merci à tous et bonne fin de soirée.

    @+,

    Cincap

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut
    Bonjour à toutes et à tous,

    Si la fonction "Deltree" est correcte, elle envoie les fichiers éffacés directement dans la poubelle.

    Question et suggestion, peux t'on envisager de les éffacer comme avec la commande Shift + del qui éfface directement les fichiers sans passer par la poubelle.

    Merci,

    @+,

    Cincap

  7. #7
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut Cincap,

    Logiquement, un simple DeleteFile et le tour est joué

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut
    @ ero-sennin, merci de ta réponse :

    Logiquement, un simple DeleteFile et le tour est joué
    Tu perds de vue que c'est un dossier qui contient un fichier + un autre dossier qui contient aussi un fichier.

    Donc "DeleteFile" ne convient que pour un fichier, non ?

    @+,

    Cincap

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ah, pardon Cincap!

    Bon, ba j'ai une autre solution (pas testé) qui est surement plus élégant, c'est d'utiliser ta méthode en enlevant le flags FOF_ALLOWUNDO qui indique que l'on envoie le tout à la corbeille.
    Ca donnerait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function DelTree(DirName : string): Boolean;
    var
      SHFileOpStruct : TSHFileOpStruct;
      DirBuf : array [0..255] of char;
    begin
      try
       Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
       FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
       StrPCopy(DirBuf, DirName) ;
       with SHFileOpStruct do begin
        Wnd := 0;
        pFrom := @DirBuf;
        wFunc := FO_DELETE;
        fFlags := FOF_NOCONFIRMATION;
        fFlags := fFlags or FOF_SILENT;
       end; 
        Result := (SHFileOperation(SHFileOpStruct) = 0) ;
       except
        Result := False;
      end;
    end;
    Tiens nous au courant
    A+

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 453
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 453
    Points : 1 337
    Points
    1 337
    Par défaut
    @ ero-sennin, bien, bien, comme ceçi cela fonctionne plus que parfait

    J'étais parti pour élaborer une autre fonction !

    Comme quoi il y a des super héros sur ce forum

    Merci beaucoup.

    @+,

    Cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2003] Bloquer Copier Coller ou transfert de fichiers sur WinSrv 2003R2
    Par sadivers dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 26/07/2013, 15h42
  2. Problème de copier-coller dans le dossier "webapps" de Tomcat
    Par JacNar6 dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 01/06/2012, 10h45
  3. Copier - Coller les résultats DES feuilles sur une seule feuille.
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2009, 15h14
  4. Réponses: 1
    Dernier message: 06/02/2009, 17h58
  5. copier coller des interfaces en vb6 sur word?
    Par roura dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/08/2007, 03h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo