Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier Coller de fichier Windows/Windev

4 réponses
Avatar
KPITN
Bonjour,

Je cherche un moyen de recuperer le chemin des fichiers qui ont été
copier dans windows.

C'est plus compliqué que le presse papier qui ne contient que du texte ou
des images, et qui etait facilement accessible via des api.


Pour le prinicpe de fonctionnement du copier/coller des fichiers sous
windows :
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_prog
ramming/transferring/datascenarios.asp


Le probleme c'est que ce n'est pas accessible via des api mais apparement
par OLE.


Première chose que je voudrais faire :

Copying File Names from the Clipboard to an Application
--------------------------------------------------------
1 - Call OleGetClipboard to retrieve the data object's IDataObject
interface.
2 - Call IDataObject::EnumFormatEtc to request an enumerator object.
3 - Use the enumerator object's IEnumFORMATETC interface to enumerate the
formats contained by the data object.







Le probleme vient du fait que je ne sais pas comment acceder au
differente fonctions, j'ai tenté avec un "shell.explorer"

Premier test :
CopyPaste est un objet automation dynamique
CopyPaste = ObjetActif("Shell.Explorer")

SI CopyPaste=Null ALORS
Trace("Pas bon")
CopyPaste = allouer un objet automation "Shell.Explorer"
SI CopyPaste=Null ALORS
Trace("Pas bon")
CopyPaste = allouer un objet automation "Shell.Explorer"
SINON
Trace("Ok")
FIN
SINON
Trace("Ok")
FIN

CopyPaste>>OleGetClipboard



Mais pas de bol ca ne marche pas, j'ai bien le message OK, mais le
OleGetClipboard fait planté l'application, c'est des plans comme ca qui
me font regretter de travailler sur windev.




Y aurais'il des fortiches qui savent comment faire pour accéder a tout
ça ?, ou trouver une autre solution pour gérer le copier-coller fichier
Windows/windev


Je post une fois de plus, mais je me demande si c la dernière fois que je
vais poster un problème complexe, vu que la plupart de mes problemes
n'obtienne aucune reponse.

4 réponses

Avatar
KPITN
Pour ne pas changer aucune reponse mais j'ai trouver la solution :

En VB tout est la : http://www.developerfusion.com/show/224/

adpatation assez simple sous windev :

j'ai test avec du drag & drop pour l'instant :

PROCEDURE SurLâcher()
NbFIchierARecup est un entier
Filename est une chaîne
SI DnDDonnéeDisponible(CF_HDROP) ALORS
// TxtDrop = DnDRécupère(CF_HDROP)


ChargeDLL("SHELL32.DLL")

//recuperer le nombre de fichier
NbFIchierARecup=AppelDLL32("SHELL32","DragQueryFile",DnDRécupère
(CF_HDROP),-1,"",0)
Filename=Complète(Filename,260)
pour i=0 a NbFIchierARecup-1
AppelDLL32("SHELL32","DragQueryFile",DnDRécupère
(CF_HDROP),0,Filename,Taille(Filename))
Filename=SansEspace(Filename)
Trace(Filename)
FIN
FIN
Avatar
Romain PETIT
Le 20/04/2004, KPITN a supposé :
Pour ne pas changer aucune reponse mais j'ai trouver la solution :



Personne n'est tenu ici de donner de réponse...
Merci quand même d'avoir publié la solution, ça pourra peut être servir
à quelqu'un un jour ou l'autre...

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, KPITN
<Sancho_nts(noSpam)@hotmail.com> ecrivait (wrote) :

Bonsoir,

Pour ne pas changer aucune reponse



C'est que malheureusement personne ne l'avait, j'imagine. Vous aurez
probablement noté, si vous suivez régulièrement ce forum de discussions,
que de nombreuses questions y trouvent réponse, tout de même :)

mais j'ai trouver la solution :



Comme Romain, je vous remercie de l'avoir donnée ici car elle pourra
probablement aider d'autres contributeurs.

Cordialement,

--
Eric
Avatar
© ---- FX ---- ©
Bonjour,

Pour ne pas changer aucune reponse mais j'ai trouver la solution :



Peut-être aussi que nous n'avions pas compris complétement la question sans
avoir consulter le lien correspondant.

j'ai test avec du drag & drop pour l'instant :



Merci aussi pour cette solution.
Regarde aussi la fonction du WdLangage ExplorerRecupere() qui si j'ai bien
compris ton code, semble faire aussi cela

--
Francis MOREL
mailto:
http://wdmlist.free.fr