Windev et le copier-coller de fichiers
Anonyme
Bonjour

Il y a deux exemples de copier-coller windev/windows dans les FAQ. L'un fonctionne très bien (le "copier windows vers windev"), mais l'inverse, le "copier windev vers windows" ne semble pas fonctionner (il manque les déclarations, mais même après avoir spécifiées celle-ci, j'ai toujours un message d'erreur "impossible de copir Fichier : le nom de fichier spécifié n'est pas valide ou est trop long.")

D'autre part, j'ai aussi ce code, qui a le même problème :
(on met dans la table des chemins de fichiers. Par exemple "c:\texte.txt")

PROCEDURE Table_Vers_Clipboard(nom_table)
ch est une chaîne
i,ipos est un entier
Handle_1, Handle_2 est un entier
SI AppelDLL32("user32","OpenClipboard",Handle()) ALORS
AppelDLL32("user32","EmptyClipboard")
Handle_1 = AppelDLL32("kernel32","GlobalAlloc",0x2,10000000)
SI Handle_1 ALORS
Handle_2 = AppelDLL32("kernel32","GlobalLock",Handle_1)
POUR i = 1 A TableOccurrence(nom_table,toColonne)
ch+={nom_table}[1][i]
FIN
// ch+=RC
AppelDLL32("kernel32","RtlMoveMemory",Handle_2,&ch,Taille(ch))
ipos = Handle_2+Taille(ch)
POUR i=1 A {nom_table}..Occurrence
ch={nom_table}[i]+Caract(0)
AppelDLL32("kernel32","RtlMoveMemory",ipos,&ch,Taille(ch))
ipos+=Taille(ch)
FIN
AppelDLL32("kernel32","GlobalUnlock",Handle_1)
AppelDLL32("user32","SetClipboardData",CF_HDROP,Handle_1)
FIN
FIN
AppelDLL32("user32","CloseClipboard")
AppelDLL32("kernel32","GlobalFree",Handle_1)


Quelqu'un saurait-il d'où vient le problème ?
Et enfin, comment faire pour le couper/coller ?
Merci d'avance à ceux qui voudront bien se pencher sur mon problème.



Le lien vers le "copier windev/windows" de la FAQ :
http://old.wdforge.org/modules/wffaq/article.php?t=53

Contribution le : 02/08/2004 17:35
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Je me suis permis à partir de WinDev 7.5 version interne(75206g) de créer une fenetre pour tester l'envoi de texte et d'image à partir des fonctions WinDev suivantes:

PressePapier
VersPressePapier
PressePapierFormat

de Windev vers WinDev
de Windev vers Windows
de Windows vers Windev

Je n'ai rencontré aucun problème ni aucune erreur

Vers le presse papier avec
un champs texte txt1 pour envoyer
un champs image1 pour envoyer

un bouton pour envoyer l'image btnEnvoiImage
SI PAS VersPressePapier(txt1)  ALORS
	Erreur("Erreur lors de l'écriture dans le presse-papiers")	
FIN


un Bouton pour envoyer le texte btnEnvoiTexte
SI PAS VersPressePapier(Image1) ALORS
	Erreur("Erreur lors de l'écriture dans le presse-papiers")		
FIN


Du presse papier avec
un champs texte txt2 pour envoyer
un champs image2 pour envoyer

un bouton pour envoyer du texte btnEnvoitexte
SI PressePapierFormat(ppfTexte) ALORS txt2 = PressePapier()


un bouton pour recevoir l'image btnRecoiImage
SI PressePapierFormat(ppfBitmap) ALORS PressePapier(Image2)


Contribution le : 02/08/2004 21:36
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Anonyme
Merci de votre réponse, mais il ne s'agit pas d'envoyer vers le presse-papiers une image ou du texte; comme sait très bien le faire windev, mais de copier des fichiers à la manière de l'xplorateur windows. Le but est par exemple de copier une liste de fichiers par windev, pour pouvoir coller ces fichiers sous l'explorateur windows.

Contribution le : 03/08/2004 15:13
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Je veux bien,
Cependant en lisant votre code, celui ci ne copie que le contenu texte d'une table vers le presse papier.
Dans votre exemple vous vous amusez à copier le contenu de chaque colonne de votre table.

Cela n'a rien à voir avec de l'envoi de données binaire vers le presse papier.

Contribution le : 03/08/2004 23:27
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Anonyme
Sans trop renter dans le détail des formats d'échange du presse-papiers windows (plus d'infos ici : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/clipboard/clipboardformats.asp), windev ne sait gérer par la fonction verspressepapier que les types de données texte et image (CF_TEXT et CF_BITMAP pour windows). Le format qu'utilise le système pour copier des listes de fichiers est tout autre, c'est le CF_HDROP. Bien sûr on passe une liste de fichiers sous forme de texte, mais il faut avoir d'abord initialisé le presse-papiers avec le format adéquat au préalable; ça ne peut fonctionner si on spécifie le format texte au presse-papiers.

D'ailleurs, on peut lire à la fin de l'aide sur verspressepapier dans windev le bien triste :

"La fonction PressePapier permet de lire le contenu du presse-papiers. Les informations autres que celles de type texte ou image (binaire, etc.) contenues dans le presse-papiers ne peuvent pas être lues par la fonction PressePapier."

Contribution le : 04/08/2004 19:50
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

Un petit exemple en VB qui ne doit pas être difficile à traduire en WLangage sur
AllApi.net

Contribution le : 05/08/2004 02:23
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Anonyme
Merci encore mais votre exemple concerne le drag and drop, et pas le copier-coller; très différent

Contribution le : 05/08/2004 12:56
Créer un fichier PDF de la contribution Imprimer


Re: Windev et le copier-coller de fichiers
Stagiaire WDF
Inscrit:
19/10/2010 15:42
Post(s): 3
Apres bien des recherches, j'ai reussie a convertir un bout de code VB et j'ai reussie a extraire la liste des fichiers et repertoires qui serait dans le presse Papier:

//Taken from :
// http://www.developerfusion.com/code/224/copy-files-to-clipboard/
//And converted to Windev by Gilles Levasseur (gilles.l@usa.net)

//Determines if the items in the Clipboards are files
SI PAS PressePapierFormat(CF_HDROP) ALORS RETOUR

//Declaration of the variables
FunctionResult is boolean // C Type:BOOL
hWndNewOwner is entier système // C Type:HWND
HandleFileList is entier système // C Type:HANDLE
uFormat is entier sans signe // C Type:UINT
uFormat = CF_HDROP
NbrFiles is entier sans signe // C Type:UINT
VAR_2_UINT is entier sans signe = 0xFFFFFFFF // C Type:UINT
VAR_3_LPSTR is chaîne = "" // C Type:LPSTR, is a string address, you can also specify a string directly
VAR_4_UINT is entier sans signe = 0 // C Type:UINT
lo_FileList est une chaîne
lo_FileCounter est un entier = 0
lo_FolderList est une chaîne
lo_FolderCounter est une entier= 0
lo_FolderName est une chaîne
lo_Filename est une chaîne fixe sur 260
lo_NewFileName est une chaîne

//Open The Clipboard
FunctionResult=API("USER32","OpenClipboard",hWndNewOwner)

//FunctionResult = True if the Windows clipboard is avaliable
SI PAS FunctionResult ALORS RETOUR

// Get handle to Dropped Filelist data, and number of files
HandleFileList=API("USER32","GetClipboardData",uFormat)
NbrFiles=API("SHELL32","DragQueryFileA",HandleFileList,VAR_2_UINT,VAR_3_LPSTR,VAR_4_UINT)

// Retrieve each filename in Dropped Filelist.
POUR i = 0 A NbrFiles -1
API("SHELL32","DragQueryFileA",HandleFileList,i,&lo_Filename,Taille(lo_Filename))
lo_NewFileName = SansEspace(fExtraitChemin(lo_Filename, fDisque + fRépertoire + fFichier + fExtension))
SI fFichierExiste(lo_NewFileName) ALORS
lo_FileList += lo_NewFileName+RC
lo_FileCounter++
SINON SI fRépertoireExiste(lo_NewFileName) ALORS
lo_FolderList += lo_NewFileName+RC
lo_FolderCounter++
FIN
FIN

// Clean up
API("USER32","CloseClipboard")

Trace("Files"+RC+lo_FileList)
Trace("Folders"+RC+lo_FolderList)



J'espere que ca aidera quelqu'un

Bien a vous.

Gilles

Contribution le : 16/11/2010 16:45
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2