[R] Copier...Coller un fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

[R] Copier...Coller un fichier

#1

Message par papami »

Bonsoir

Peut-on réaliser par script la copie de fichier effectuée habituellement par clic-droit/copier dans Windows ...
c'est-à-dire transférer le fichier dans le buffer Windows (à partir d'un chemin/nom de fichier obtenu dans le script) pour coller à un autre endroit, cette fois par clic-droit et coller ?

je ne connais rien à la manipulation des .dll mais il me semble que shell32.dll et inetcplc.dll sont utilisées (et peut-être d'autres ?) ?

j'ai recherché sur le forum mais le logiciel supprime arbitrairement le mot 'fichier' et je ne trouve que plusieurs centaines de réponses axées sur le presse-papier 'classique' (ClipGet et ClipPut) ou quelques-unes sur Copyfile

Merci
Modifié en dernier par papami le ven. 18 nov. 2011 11:36, modifié 1 fois.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

Re: [..] copier...coller un fichier

#2

Message par TT22 »

FileCopy ?
Cordialement,
TT22
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: [..] copier...coller un fichier

#3

Message par papami »

TT22 a écrit :FileCopy ?
Merci mais ... non.
Ce n'est pas ce que je cherche à réaliser
...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#4

Message par Tlem »

Pouvez-vous expliquer pourquoi cela ne vous convient pas, car cette fonction permet la copie d'un fichier tout comme le fait Windows par le presse-papier ?

Sinon, vous avez la réponse exacte à ce que vous demandez ici : http://www.autoitscript.com/forum/topic ... __p__89276
Mais comme il n'y à pas de code fonctionnel, je doute que cela vous convienne. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#5

Message par papami »

Tlem a écrit :Pouvez-vous expliquer pourquoi cela ne vous convient pas, car cette fonction permet la copie d'un fichier tout comme le fait Windows par le presse-papier ?

Sinon, vous avez la réponse exacte à ce que vous demandez ici : http://www.autoitscript.com/forum/topic ... __p__89276
Mais comme il n'y à pas de code fonctionnel, je doute que cela vous convienne. :mrgreen:
merci.
a) j'utilise bien fileCopy mais cette fois ce n'est pas ce que je recherche car il faut soit indiquer la destination, soit ouvrir un dialogue pour l'obtenir (ce qui est ma solution de replis) alors qu'une fois en buffer l'utilisateur peut mettre le pointeur immédiatement sur le bureau (ou ailleurs) et clic-droit coller ... ou le faire ultérieurement même une fois le script fermé (s'il n'y a pas un autre 'copier' entre temps évidemment)
b) 8) oui le lien mène bien à une partie de la réponse .... faut-il encore trouver si cela a été appliqué en Autoit :?: merci de me l'avoir dégoté (j'en ai pour un moment à le traduire :wink: )

à+
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#6

Message par Tlem »

Je n'ai pas d'idée sur la manière de bufferiser dans le press-papier, par contre il est possible de tricher en bloquant le clavier/souris quelques secondes et en exécutant la séquence :

- Ouvrir l'explorer sur le dossier du fichier.
- Envoyer la séquence de touche correspondant au nom du fichier.
- Envoyer la séquence de touche CTRL + C
- Fermer l'explorer.
- Ré-activer clavier/souris.

Certes, c'est une méthode très space, mais cela donne une possibilité alternative à quelque chose qui n'est pas encore fonctionnel. :mrgreen:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#7

Message par papami »

oui, c'est aussi une solution ... mais faudrait un rideau devant l'écran ...
je vais peut-être mettre mon désir au placard ... en attendant mieux :lol:

bonne nuit !
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#8

Message par Iste »

Signez ici
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#9

Message par papami »

Iste a écrit :bah, et ca http://autoitscript.fr/forum/viewtopic. ... 308#p42308 ca marche pas ?
ben à première vue non :(
- je contrôle l'état du presse-papier Win (clic-droit sur le bureau par exemple,
'coller' est grisé
- je lance le script en y ayant indiqué un chemin/fichier
- l'affaire semble dans le sac : clic-droit : 'coller' est visible
- je le valide ... rien ne sort

pas étonnant, car si j'envoie le même résultat dans un fichier, ce dernier ne comporte qu'un seul caractère (14 en hexa)

mais je vais y regarder de plus près, merci
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#10

Message par zeshrek »

Tu as la solution de rajouter un menu contextuel au clic droit.
Genre tu fais ton copier, cad tu stocke qqpart (dans la registry par ex) la source de la copie, et quand ton user clique droit ur le bureau, il a l'option 'coller avec papami_copy'
Et la ton script fait un bête filecopy.
Si vis pacem para bellum
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#11

Message par Iste »

Tien etrange, vous utilisez quel OS ?
Chez moi tout fonction tres bien.

j'ai utilisé presque ligne pour ligne le code que je vous ai passé
► Afficher le texte
Signez ici
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1550
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#12

Message par sylvanie »

Et pourquoi pas simplement _ClipPutFile ?
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#13

Message par Ahbadiane »

Bonjour papami,

Regarde si mon utilitaire ClipSpirit répond à ta demande.
Il permet de copier un ou plusieurs liens fichiers depuis l’explorer Windows (par un simple copier) et ensuite pour de replacer ces liens dans le presse-papier : Dans ClipSpirit, choix Action/Copier les liens fichiers dans le presse-papier.
Si c'est ce que tu cherches, je t'extrairai les éléments.
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#14

Message par papami »

sylvanie a écrit :Et pourquoi pas simplement _ClipPutFile ?
parce que je suis trop bêêête pour n'avoir pas bien cherché avec F1 :oops:
(apparemment je ne suis pas le seul :lol: )

il n'y a pas ici de smileys 'bisous' mais c'est comme si :)

Merci !


- pour Iste : Win2000 pro sp4
j'ai repris votre script. après validation d'un fichier le presse-papier est bien activé, mais rien ne se colle ensuite

et merci à tous pour vos réponses
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Copier...Coller un fichier

#15

Message par Tlem »

sylvanie a écrit :Et pourquoi pas simplement _ClipPutFile ?
Whahouu, pourtant j'avais fait défilé les fonctions Clipxxx pour voir si sa existait, mais j'étais resté aux fonctions ClipBoardxxx.
Shame on me ! :oops:

D’ailleurs la consultation de cette fonction dans Misc.au3 est très instructive. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] Copier...Coller un fichier

#16

Message par Iste »

Idem, j'ai pourtant regardé plusieurs foi pour ca :o

Content de connaitre cette fonction, plutot bien fichue !
Signez ici
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [R] Copier...Coller un fichier

#17

Message par zeshrek »

Et bien comme ca on est au moins 3 a avoir les yeux qui ont besoin d'une révision. :oops:
Si vis pacem para bellum
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Copier...Coller un fichier

#18

Message par TommyDDR »

Désolé de faire un mini déterrage de post mais je tenais à ajouter une précision (après avoir galéré pour trouver pourquoi mon script ne marchait pas).

Si vous utilisez _ClipPutFile, vous ne pourrez plus utiliser d'autres fonctions du clipboard !

ClipPut, _ClipBoard_SetData etc ne marcheront plus.

Exemple :

Code : Tout sélectionner

#include <Misc.au3>
_ClipPutFile(@SystemDir & "\calc.exe")
ClipPut("test")
 
Votre presse-papier ne contiendra pas "test".

Du coup, il reste ma technique disponible dans un post au fin fond du forum (que je remonte pour vous) :

Code : Tout sélectionner

#include <Clipboard.au3>
_ClipBoard_SetData(CreerFileClip(@ScriptDir & $ExeFile), $CF_HDROP)

Func CreerFileClip($Chemin)
    $Chemin = StringReplace($Chemin, @CRLF, @LF)
    $Chemin = StringSplit($Chemin, @LF, 1)
    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
    For $j = 1 To $Chemin[0]
        $Clip &= $NULL & $NULL
        For $i = 1 To StringLen($Chemin[$j])
            $Clip &=  StringMid($Chemin[$j], $i, 1) & $NULL
        Next
    Next
    $Clip &= $NULL & $NULL & $NULL & $NULL
    Return $Clip
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Sea
Niveau 6
Niveau 6
Messages : 219
Enregistré le : ven. 22 juin 2012 18:51
Localisation : France
Status : Hors ligne

Re: [R] Copier...Coller un fichier

#19

Message par Sea »

Ou alors avec les API(_WinAPI_CopyFileEx) ce qui donne un truc comme(petit tool codé en 5min si tu veux que je commente fais mois signe ;))
► Afficher le texte
Modifié en dernier par mikell le lun. 03 déc. 2012 17:54, modifié 1 fois.
Raison : balise spoiler
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] Copier...Coller un fichier

#20

Message par TommyDDR »

Je ne sais pas si vous avez compris la problématique qui est de copier un fichier dans le presse-papier.
Votre solution montre comment copier un fichier dans le sens "écrire sur le disque dur". D’ailleurs pour cela il y a aussi le FileCopy(). Mais la question était bien de passer par le presse-papier.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre