none
Comment copier plusieurs fichiers des ressource vers le presse-papiers ? RRS feed

  • Question

  • Bonjour,

    Exposé : j'ai en ressources 2 fichiers :  compteur   (issu de : compteur.txt) +  compteur1 (issu de : compteur.php)

    Demande :

    Via la procédure d'un bouton je voudrais recomposer ces 2 fichiers issus des ressources donc (compteur.txt + compteur.php) afin de les coller (tous les 2 à la fois) dans ClipBoard (presse-papiers) pour pouvoir coller à nouveau ces deux fichiers en tant que tel dans un autre répertoire vis le clique droit de la souris "coller" (donc via aussi le presse-papiers), comment faire je vous prie ?

    J'ai fait quelques tentatives que voici en vrac (commentaires ensuite) :

    Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
        System.IO.File.WriteAllText(My.Application.Info.DirectoryPath & "\compteur.txt", My.Resources.compteur)
        System.IO.File.WriteAllBytes(My.Application.Info.DirectoryPath & "\compteur.php", My.Resources.compteur1)
    
        Clipboard.SetDataObject(My.Application.Info.DirectoryPath & "\compteur.txt" & My.Application.Info.DirectoryPath & "\compteur.txt", True)
    
    
        Clipboard.SetDataObject(System.IO.File.WriteAllText("compteur.txt", My.Resources.compteur))
    
    
      End Sub ' copie compteurs

    Commentaires :

    Les 2 premières lignes ça marche, j'extrais 2 fichiers des procédures que je colle sur mon disque, je retrouve bien les fichiers, ceci était juste pour tester, je ne veux pas procéder ainsi en deux étapes.

    La ligne 3 ne marche pas ! Ça ne va pas dans le presse-papiers car avec le clique droit je n'ai pas "coller"...

    La ligne 4 est un tentative avortée, c'était pour voir comment ça réagissait, mais c'est en définitive ce que je voudrais faire dans le principe, mais en mettant en même temps les deux fichiser, soit schématiquement :

    ClipBoard = ressource1 recomposé en fichier compteur.txt + ressource2 recomposé en fichier compteur.php

    Merci de vos lumières ?

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    jeudi 29 novembre 2012 10:22

Réponses

  • Bonjour,

    Voir plutôt http://msdn.microsoft.com/fr-fr/library/system.windows.forms.clipboard.setfiledroplist.aspx. Je crois comprendre que l'on veut faire un copier/coller des fichiers eux même plus que mettre leur contenu sous forme de texte dans le presse papiers...

    Cela peut donner par exemple qq chose comme :

    Clipboard.SetFileDropList(New StringCollection() From {"c:\A.txt", "c:\b.txt"})
    Ce qui permet ensuite d'aller dans un dossier quelconque et de faire un coller pour y copier ces fichiers

    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    jeudi 29 novembre 2012 10:44
    Modérateur
  • Bonjour,

    Une solution pourrait consister en créer des fichiers temporaires puis en faire la copie comme montré par Patrice, voici une code que je viens de tester :

           Dim A = Path.Combine(Path.GetTempPath, "compteur.txt")
            'remplir le fichier
            File.WriteAllText(A, "Testttttttttttttttttttttttttttttttttttttttttttttt")
    
            Dim B = Path.Combine(Path.GetTempPath, "compteur.php")
            File.WriteAllText(B, "Testttttttttttttttttttttttttttttttttttttttttttttt")
    
            Clipboard.SetFileDropList(New System.Collections.Specialized.StringCollection() From {A, B})

    Cordialement.


    jeudi 29 novembre 2012 11:47
    Auteur de réponse

Toutes les réponses

  • Bonjour,

    Voir plutôt http://msdn.microsoft.com/fr-fr/library/system.windows.forms.clipboard.setfiledroplist.aspx. Je crois comprendre que l'on veut faire un copier/coller des fichiers eux même plus que mettre leur contenu sous forme de texte dans le presse papiers...

    Cela peut donner par exemple qq chose comme :

    Clipboard.SetFileDropList(New StringCollection() From {"c:\A.txt", "c:\b.txt"})
    Ce qui permet ensuite d'aller dans un dossier quelconque et de faire un coller pour y copier ces fichiers

    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".


    jeudi 29 novembre 2012 10:44
    Modérateur
  • Bonjour Patrice,

    Je te remercie, tu as tout à fait compris, j'ai fait un truc qui évidemment ne marche pas, suite après :

    Dim A = Nothing Dim B = Nothing System.IO.File.WriteAllText(A & "\compteur.txt", My.Resources.compteur) ' le client ne dispose pas du privilège nécessaire

    System.IO.File.WriteAllBytes(B & "\compteur.php", My.Resources.compteur1)

    Clipboard.SetFileDropList(New System.Collections.Specialized.StringCollection() From {A, B})

    J'ai mis deux variables car sinon l'instruction était trop longue.

    En fait je ne sais pas comment lui passer (à ton instruction) à la fois le nom et le contenu du fichier dans une variable (des deux sans fusion), à moins qu'il faille deux paramétres, mais comment et quel type de variable peut recevoir ça, à moins qu'il en faille deux paires ?

    Ceci afin que clipboard prenne ça comme deux fichiers et les restituent en l'état ?

    Je patauge !

    Au plaisir, cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire



    • Modifié EhJoe jeudi 29 novembre 2012 11:21
    jeudi 29 novembre 2012 11:20
  • Bonjour,

    Une solution pourrait consister en créer des fichiers temporaires puis en faire la copie comme montré par Patrice, voici une code que je viens de tester :

           Dim A = Path.Combine(Path.GetTempPath, "compteur.txt")
            'remplir le fichier
            File.WriteAllText(A, "Testttttttttttttttttttttttttttttttttttttttttttttt")
    
            Dim B = Path.Combine(Path.GetTempPath, "compteur.php")
            File.WriteAllText(B, "Testttttttttttttttttttttttttttttttttttttttttttttt")
    
            Clipboard.SetFileDropList(New System.Collections.Specialized.StringCollection() From {A, B})

    Cordialement.


    jeudi 29 novembre 2012 11:47
    Auteur de réponse
  • Effectivement comme indiqué par Ould Mourad, c'est le chemin complet du fichier qu'il faut passer (A et B semblent ne correspondre qu'au dossier dans ton code original).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 29 novembre 2012 11:51
    Modérateur
  • Merci à tous,

    Merci à Patrice, merci à Mourad...

    En plus j'ai réussi à trouver une autre solution y'a 5 minutes :

    '
    Dim DataObject As New DataObject()
    Dim Files() As String = {My.Application.Info.DirectoryPath & "\compteur.txt", My.Application.Info.DirectoryPath & "\compteur.php"}
    DataObject.SetData(DataFormats.FileDrop, Files)
    Clipboard.SetDataObject(DataObject)
    '

    Mais bon, demie solution, elle oblige à décompresser sur le disque avant...

    Cordialement à vous deux :o)



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire



    • Modifié EhJoe jeudi 29 novembre 2012 12:43
    jeudi 29 novembre 2012 12:42