Page 1 sur 2

[R] Copier...Coller un fichier

Posté : mar. 15 nov. 2011 21:51
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

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

Posté : mar. 15 nov. 2011 21:53
par TT22
FileCopy ?

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

Posté : mar. 15 nov. 2011 22:05
par papami
TT22 a écrit :FileCopy ?
Merci mais ... non.
Ce n'est pas ce que je cherche à réaliser
...

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

Posté : mar. 15 nov. 2011 22:45
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:

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

Posté : mar. 15 nov. 2011 23:17
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: )

à+

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

Posté : mer. 16 nov. 2011 00:12
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:

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

Posté : mer. 16 nov. 2011 00:32
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 !

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

Posté : mer. 16 nov. 2011 03:19
par Iste

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

Posté : mer. 16 nov. 2011 08:59
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

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

Posté : mer. 16 nov. 2011 09:59
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.

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

Posté : mer. 16 nov. 2011 10:26
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

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

Posté : mer. 16 nov. 2011 11:23
par sylvanie
Et pourquoi pas simplement _ClipPutFile ?

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

Posté : mer. 16 nov. 2011 11:53
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.

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

Posté : ven. 18 nov. 2011 11:35
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

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

Posté : ven. 18 nov. 2011 11:54
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. ;)

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

Posté : ven. 18 nov. 2011 12:31
par Iste
Idem, j'ai pourtant regardé plusieurs foi pour ca :o

Content de connaitre cette fonction, plutot bien fichue !

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

Posté : ven. 18 nov. 2011 14:20
par zeshrek
Et bien comme ca on est au moins 3 a avoir les yeux qui ont besoin d'une révision. :oops:

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

Posté : mer. 27 juin 2012 20:14
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

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

Posté : mer. 27 juin 2012 21:43
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

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

Posté : jeu. 28 juin 2012 14:08
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.