[R] Récupérer un fichier situé dans le presse papier.
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
[R] Récupérer un fichier situé dans le presse papier.
Bonjour,
J'ai pour projet en ce moment de créer une sorte de "super presse papier" qui garderai les x derniers éléments copié en mémoire.
J'ai réussi a récupérer le texte, les images (impression écran), une analyse du texte me permet de savoir si c'est un lien internet, et en bonus pour les développeur, la copie d'une couleur (0x......).
Il ne me reste plus qu'a récupérer les fichier (lorsque l'on copie un fichier à partir de l'explorer)
Ma question est donc: Comment récupérer (le handle ?) du fichier ciblé pour le stocker puis remettre celui ci dans le presse papier pour pouvoir le recoller ultérieurement.
Merci.
Edit :
Utilisation du programme :
Ctrl + Alt : Affiche / cache la fenetre
Ctrl + UP / DOWN : Sélectionne l item adjacent en haut / bas (quand l'item est selectionné, il est copier dans le presse papier)
Ctrl + C / ImprEcr / clic droit, copier : Ajoute un item dans le programme
Ctrl + Enter : Colle l'item.
Ctrl + ² : Quitte le programme
MAJ du fichier
Voici une impression écran du programme
J'ai pour projet en ce moment de créer une sorte de "super presse papier" qui garderai les x derniers éléments copié en mémoire.
J'ai réussi a récupérer le texte, les images (impression écran), une analyse du texte me permet de savoir si c'est un lien internet, et en bonus pour les développeur, la copie d'une couleur (0x......).
Il ne me reste plus qu'a récupérer les fichier (lorsque l'on copie un fichier à partir de l'explorer)
Ma question est donc: Comment récupérer (le handle ?) du fichier ciblé pour le stocker puis remettre celui ci dans le presse papier pour pouvoir le recoller ultérieurement.
Merci.
Edit :
Utilisation du programme :
Ctrl + Alt : Affiche / cache la fenetre
Ctrl + UP / DOWN : Sélectionne l item adjacent en haut / bas (quand l'item est selectionné, il est copier dans le presse papier)
Ctrl + C / ImprEcr / clic droit, copier : Ajoute un item dans le programme
Ctrl + Enter : Colle l'item.
Ctrl + ² : Quitte le programme
MAJ du fichier
Voici une impression écran du programme
Modifié en dernier par TommyDDR le mer. 12 janv. 2011 17:19, modifié 6 fois.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- FuriousFred
- Niveau 1
- Messages : 14
- Enregistré le : mer. 23 sept. 2009 22:47
- Status : Hors ligne
Re: [..] Récupérer un fichier dans situé dans le presse papier.
Bonjour,
à ma connaissance on ne peut pas récupérer le handle d'un fichier / dossier.
Toutefois il est possible d'en récupérer un chemin... Je n'ai jamais poussé l'idée mais à vôtre place, j'irais voir du côté des fonctions FileExits() , FileFindFirstFind(), FileFindNextFile() et enfin FileCopy(). Mais je vous envoie sur un long chemin sinueux quand même.
Sinon vous pouvez essayer d'utiliser la variable $CmdLine[1] à utiliser avec l'include array.au3, mais là encore ce n'est qu'une piste à explorer.
Désolé de ne pouvoir faire mieux et bon courage pour vôtre script. En espérant que d'autres auront une meilleure solution à proposer.
Edit: Sujet déjà traité: http://autoitscript.fr/forum/viewtopic.php?f=3&t=4915
FuriousFred
à ma connaissance on ne peut pas récupérer le handle d'un fichier / dossier.
Toutefois il est possible d'en récupérer un chemin... Je n'ai jamais poussé l'idée mais à vôtre place, j'irais voir du côté des fonctions FileExits() , FileFindFirstFind(), FileFindNextFile() et enfin FileCopy(). Mais je vous envoie sur un long chemin sinueux quand même.
Sinon vous pouvez essayer d'utiliser la variable $CmdLine[1] à utiliser avec l'include array.au3, mais là encore ce n'est qu'une piste à explorer.
Désolé de ne pouvoir faire mieux et bon courage pour vôtre script. En espérant que d'autres auront une meilleure solution à proposer.
Edit: Sujet déjà traité: http://autoitscript.fr/forum/viewtopic.php?f=3&t=4915
FuriousFred
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier dans situé dans le presse papier.
J'avais pensé à cela aussi mais je ne passerai plus par le presse papier en faisant cela.
Un ctrl+v doit resté la "propriété" de windows^^
Par exemple, si l'on fait ctrl+v dans msn, si j'utilise votre méthode, cela n'enverra pas le fichier par msn.
Un ctrl+v doit resté la "propriété" de windows^^
Par exemple, si l'on fait ctrl+v dans msn, si j'utilise votre méthode, cela n'enverra pas le fichier par msn.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier dans situé dans le presse papier.
Humm, après bonne annalyse de votre réponse, je pense que vous n'avez pas bien compris ma demande.
Je m'explique.
Cas 1:
Vous êtes dans un fichier texte, vous selectionnez du texte et pressez les touches ctrl+c (ou clic droit copier)
Là, windows va mettre ce texte dans le presse papier(ClipGet() permet de récupérer le texte et ClipPut() permet de le remettre dedent
Conclusion : Je peux stocker du texte qui se trouve dans le press papier et le réinjecter dedent.
Cas 2:
Vous êtes sur votre bureau, vous pressez impr ecran.
Là, windows va mettre un pointeur sur une image dans le presse papier (_ClipBoard_GetData($CF_DIB) permet de récupérer la donnée pointé par le presse papier et _ClipBoard_SetData($Donnee, $CF_DIB) permet de réinjecter celle-ci dedent
Conclusion : Je peux stocker une image qui se trouve dans le press papier et la réinjecter dedent.
Cas 3:
Vous êtes dans l'explorer, vous pressez les touches ctrl+c (ou clic droit copier)
Là, windows va mettre ????? dans le presse papier (???? = je ne sais pas ce qu'il met ^^) ClipGet() permet de récupérer le chemin complet du fichier et je ne sais pas quel fonction utiliser pour remettre ?????? dans le presse papier (ClipPut($Chemin) ne ferait que mettre du texte dans le presse papier)
Conclusion : Je peux stocker le chemin du fichier qui se trouve dans le press papier mais pas le réinjecter dedent.
Need Help
Ps1 : Les fonctions FileFindFirstFile et FileFindNextFile ne me seront pas utile, je ne veut pas lister les fichiers/dossiers d'un dossier vu que de toute manière je peux récupérer le chemin du fichier.
Ps2 : La variable $CmdLine permet de récupérer les arguments envoyé au main de l'executable (Qui ne dépend pas du tout de Array.au3) et ne peut en aucun cas m'aider)
Ps3 : Le "sujet déjà traité" n'a pas de rapport avec ma demande :s
Ps4 : J'ai connu plus sinueux comme chemin que les Filexxxx() ^^
Je m'explique.
Cas 1:
Vous êtes dans un fichier texte, vous selectionnez du texte et pressez les touches ctrl+c (ou clic droit copier)
Là, windows va mettre ce texte dans le presse papier(ClipGet() permet de récupérer le texte et ClipPut() permet de le remettre dedent
Conclusion : Je peux stocker du texte qui se trouve dans le press papier et le réinjecter dedent.
Cas 2:
Vous êtes sur votre bureau, vous pressez impr ecran.
Là, windows va mettre un pointeur sur une image dans le presse papier (_ClipBoard_GetData($CF_DIB) permet de récupérer la donnée pointé par le presse papier et _ClipBoard_SetData($Donnee, $CF_DIB) permet de réinjecter celle-ci dedent
Conclusion : Je peux stocker une image qui se trouve dans le press papier et la réinjecter dedent.
Cas 3:
Vous êtes dans l'explorer, vous pressez les touches ctrl+c (ou clic droit copier)
Là, windows va mettre ????? dans le presse papier (???? = je ne sais pas ce qu'il met ^^) ClipGet() permet de récupérer le chemin complet du fichier et je ne sais pas quel fonction utiliser pour remettre ?????? dans le presse papier (ClipPut($Chemin) ne ferait que mettre du texte dans le presse papier)
Conclusion : Je peux stocker le chemin du fichier qui se trouve dans le press papier mais pas le réinjecter dedent.
Need Help

Ps1 : Les fonctions FileFindFirstFile et FileFindNextFile ne me seront pas utile, je ne veut pas lister les fichiers/dossiers d'un dossier vu que de toute manière je peux récupérer le chemin du fichier.
Ps2 : La variable $CmdLine permet de récupérer les arguments envoyé au main de l'executable (Qui ne dépend pas du tout de Array.au3) et ne peut en aucun cas m'aider)
Ps3 : Le "sujet déjà traité" n'a pas de rapport avec ma demande :s
Ps4 : J'ai connu plus sinueux comme chemin que les Filexxxx() ^^
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Fish
- Niveau 5
- Messages : 178
- Enregistré le : sam. 23 oct. 2010 19:28
- Localisation : Devant mon ordinateur.
- Status : Hors ligne
Re: [..] Récupérer un fichier dans situé dans le presse papier.
Bonjour!
Je pense qu'il faut créer un dossier pendant l'exécution du script dans le répertoire ou se trouve le script (@scriptdir) et ouvrir ce dossier, et envoyer Ctrl+v (coller). Si c'est du texte sa ne ferra rien, si c'est autre chose sa le mettra dans le dossier.
Après je ne suis qu'un débutant, je ne suis pas sur que cela marche et ne sait pas si c'est la meilleur solution.
Je pense qu'il faut créer un dossier pendant l'exécution du script dans le répertoire ou se trouve le script (@scriptdir) et ouvrir ce dossier, et envoyer Ctrl+v (coller). Si c'est du texte sa ne ferra rien, si c'est autre chose sa le mettra dans le dossier.
Après je ne suis qu'un débutant, je ne suis pas sur que cela marche et ne sait pas si c'est la meilleur solution.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier dans situé dans le presse papier.
... pourquoi personne ne comprend ma demande ...
Tester mon script pour voir comment il fonctionne.
Je veut STOCKER ce qu'il se trouve dans le presse papier pour le remettre dedans plus tard.
Je sais stocker du texte, une image, mais pas fichier.
Si vous préférez, je cherche (grâce à un chemin de fichier), à mettre celui-ci dans le presse papier pour qu'un ctrl+v puisse coller celui ci.
Tester mon script pour voir comment il fonctionne.
Je veut STOCKER ce qu'il se trouve dans le presse papier pour le remettre dedans plus tard.
Je sais stocker du texte, une image, mais pas fichier.
Si vous préférez, je cherche (grâce à un chemin de fichier), à mettre celui-ci dans le presse papier pour qu'un ctrl+v puisse coller celui ci.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- Fish
- Niveau 5
- Messages : 178
- Enregistré le : sam. 23 oct. 2010 19:28
- Localisation : Devant mon ordinateur.
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.

En espèrent t'avoir aidé.
Cordialement,
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
Fish-panai.
P.S (Pas Salé): Vive le poisson pané.
- FuriousFred
- Niveau 1
- Messages : 14
- Enregistré le : mer. 23 sept. 2009 22:47
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.
Autant pour moi, j'avais zappé le "à partir de l'explorer". J'ai compris ton problème pour ton script, mais je ne sais pas comment le résoudre pour le moment, je remet le nez dedans Lundi si le sujet n'est pas [R] d'ici là.TommyDDR a écrit : Il ne me reste plus qu'a récupérer les fichier (lorsque l'on copie un fichier à partir de l'explorer)
Bon W.E. à tous.
Cordialement,
Furiousfred
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.
Merci à toi FuriousFred, ça fait plaisir de voir que tu cherches avec moi ^^
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
-
- Niveau 7
- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.
Bonjour
Alors quand tu copies des fichiers depuis l'explorateur, windows ajoute les chemins dans le presse papier
pour tester, copie des fichiers dans l'explorateur, Ctrl+C
Sous scite; exécute le fichier au3 de ton choix avec tu auras un tableau avec les fichiers à copier.
Alors quand tu copies des fichiers depuis l'explorateur, windows ajoute les chemins dans le presse papier
pour tester, copie des fichiers dans l'explorateur, Ctrl+C
Sous scite; exécute le fichier au3 de ton choix avec
Code : Tout sélectionner
Local $aFiles = StringSplit(ClipGet(), @CRLF)
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.
... Je sais que vous êtes de bonne volonté ^^' mais je suis déjà au courant de tout cela, je souhaite juste savoir QUOI récupérer pour pouvoir le REMETTRE dans le presse papier plus tard.
S'il faut seulement le chemin du fichier, soit ! Mais que dois-je faire avec ce chemin pour le remettre dans le presse papier ?
Un ClipPut(Chemin) ne marche bien évidemment pas, cela mettrai juste une chaine de caractère dans le presse papier.
Ps : je fourni les sources, profitez en pour y jeter un œil ^^.
S'il faut seulement le chemin du fichier, soit ! Mais que dois-je faire avec ce chemin pour le remettre dans le presse papier ?
Un ClipPut(Chemin) ne marche bien évidemment pas, cela mettrai juste une chaine de caractère dans le presse papier.
Ps : je fourni les sources, profitez en pour y jeter un œil ^^.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
- TommyDDR
- Modérateur
- Messages : 2104
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: [..] Récupérer un fichier situé dans le presse papier.
He bien !!!!! 
Après de longues recherches j'ai enfin réussi à arriver à mes fins !
Voici un exemple de code qui permet de mettre un fichier dans le press papier à partir de son nom.
Résolu.

Après de longues recherches j'ai enfin réussi à arriver à mes fins !
Voici un exemple de code qui permet de mettre un fichier dans le press papier à partir de son nom.
Code : Tout sélectionner
#include <Clipboard.au3>
$Clip = CreerFileClip("Chemin de votre fichier ici")
_ClipBoard_SetData($Clip, $CF_HDROP)
Func CreerFileClip($Chemin)
Local $NULL = StringLeft(BinaryToString(0), 1)
Local $Clip = Chr(20) & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & $NULL & Chr(1) & _
$NULL & $NULL & $NULL
For $i = 1 To StringLen($Chemin)
$Clip &= StringMid($Chemin, $i, 1) & $NULL
Next
$Clip &= $NULL & $NULL & $NULL & $NULL
Return $Clip
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679