Meilleur auteur de réponses
Comment copier plusieurs fichiers des ressource vers le presse-papiers ?

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
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".
- Modifié Patrice ScribeMVP, Moderator jeudi 29 novembre 2012 10:46 Exemple
- Marqué comme réponse EhJoe jeudi 29 novembre 2012 12:45
-
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.
- Proposé comme réponse Patrice ScribeMVP, Moderator jeudi 29 novembre 2012 11:49
- Modifié Ould MouradEditor jeudi 29 novembre 2012 11:59
- Marqué comme réponse EhJoe jeudi 29 novembre 2012 12:45
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".
- Modifié Patrice ScribeMVP, Moderator jeudi 29 novembre 2012 10:46 Exemple
- Marqué comme réponse EhJoe jeudi 29 novembre 2012 12:45
-
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
-
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.
- Proposé comme réponse Patrice ScribeMVP, Moderator jeudi 29 novembre 2012 11:49
- Modifié Ould MouradEditor jeudi 29 novembre 2012 11:59
- Marqué comme réponse EhJoe jeudi 29 novembre 2012 12:45
-
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".
-
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