JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Contenu du presse-papier Ven 24 Nov 2017 - 22:02 | |
| Pour ne pas polluer le post de pascal10000 (vider le presse-papier) et suite à la remarque de silverman, un petit exemple qui vaut ce qu'il vaut pour connaître le contenu du presse-papier: - Code:
-
LABEL Etat,Raz DIM typ$,i%,w$,h$,a$ WIDTH 0,300: HEIGHT 0,90: BORDER_SMALL 0: FONT_BOLD 0: FONT_SIZE 0,12 CAPTION 0," - CONTENU DU PRESSE 6 PAPIER -": COLOR 0,200,255,255 ALPHA 1 BUTTON 2: TOP 2,HEIGHT(0)-66: LEFT 2,WIDTH(0)/2-40: CAPTION 2,"Raz clip" ON_CLICK 2,Raz GOSUB Etat END ' ============================================================================== Etat: Clip() i% = VAL(LEFT$(typ$,1)) SELECT i% CASE 0: a$ = "Presse-papier vide" CASE 1: typ$ = RIGHT_POS$(typ$,3): i% = INSTR(typ$,",") a$ = "Texte, "+LEFT$(typ$,i%-1)+" lignes, "+RIGHT_POS$(typ$,i%+1)+" octets." CASE 2: typ$ = RIGHT_POS$(typ$,3): i% = INSTR(typ$,","): w$ = LEFT$(typ$,i%-1) typ$ = RIGHT_POS$(typ$,i%+1): i% = INSTR(typ$,","): h$ = LEFT$(typ$,i%-1) a$ = "Image, "+w$+"x"+h$+", "+RIGHT_POS$(typ$,i%+1)+" octets." END_SELECT CAPTION 1,a$ RETURN ' ============================================================================== Raz: CLIPBOARD_STRING_COPY "": ' Raz du presse-papier, méthode silverman GOSUB Etat RETURN ' ============================================================================== SUB Clip() ' Contenu du presse-papier -> typ$ ="0" vide, ="1,nl" texte+nb de lignes, ' ="2,w,h" image de dimensions w x h DIM_LOCAL p%,nl%,i%,w%,h%,v%(8),sz%,ff$ ff$ = "C:\TEMP\Img.bmp" p% = 950: PICTURE p%: HIDE p%: WIDTH p%,123: HEIGHT p%,456 MEMO p%+1: HIDE p%+1: WIDTH p%+1,5000 CLIPBOARD_PASTE p%: CLIPBOARD_PASTE p%+1 typ$ = "0": ' clip vide nl% = COUNT(p%+1) IF nl% > 0 sz% = 0 FOR i% = 1 TO COUNT(p%+1): sz% = sz%+LEN(ITEM_READ$(p%+1,i%)): NEXT i% sz% = sz%+(nl%-1)*2: ' + les rc/al typ$ = "1,"+STR$(nl%)+","+STR$(sz%): ' type texte+nb de lignes+taille ELSE FILE_SAVE p%,ff$ FILEBIN_OPEN_READ 9, ff$: sz% = FILEBIN_SIZE(9) FILEBIN_POSITION 9, 18: FILEBIN_BLOCK_READ 9,8,v%(0) w% = v%(0)+256*v%(1)+65536*v%(2)+16777216*v%(3) h% = v%(4)+256*v%(5)+65536*v%(6)+16777216*v%(7) FILEBIN_CLOSE 9: FILE_DELETE ff$ IF w%<>123 OR h%<>456 typ$ = "2,"+STR$(w%)+","+STr$(h%)+","+STR$(sz%): ' type image,dimensions,taille END_IF END_IF DELETE p%: DELETE p%+1 END_SUB ' ============================================================================== Le programme donne le contenu du presse papier: - Type 0 s'il est vide (enfin, ce n'est ni un texte ni une image) - Type 1 si c'est un texte, avec le nombre de ligne et le volume en octets - Type 2 si c'est une image, avec les dimensions (w x h) et la taille en octets J'ai testé sous Windows 7 et sous Windows 10, avec du texte ou des images, je ne vois pas de différence, et ça semble marcher dans les deux cas... Maintenant, peut-être que quelque chose m'échappe, notamment sans doute le volume occupé par le presse-papier malgré qu'il n'y ait plus rien d'accessible... Je m'aperçois que je n'ai pas pensé à un truc: un fichier binaire, par exemple un exécutable... qu'on peut copier dans le presse-papier, mais qui n'est pas détecté ci-dessus... aïe ! Est-il possible de 'coller' du binaire dans une structure Panoramic ?
Dernière édition par JL35 le Ven 24 Nov 2017 - 22:47, édité 1 fois | |
|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Contenu du presse-papier Ven 24 Nov 2017 - 22:35 | |
| - Citation :
- Est-il possible de 'coller' du binaire dans une structure Panoramic ?
Non. Et en ce qui concerne les types d'information possiblement contenues dans le presse-papier, ils sont nombreux ! Voici les formats de base: Mais ce ne sont que les formats "habituels". Voici la liste des catégories de formats: - Citation :
Standard Clipboard Formats Registered Clipboard Formats Private Clipboard Formats Multiple Clipboard Formats Synthesized Clipboard Formats
Information extraite de la page MSDN: https://msdn.microsoft.com/en-us/library/windows/desktop/ms649013(v=vs.85).aspxTu vois, le problème est assez complexe. Et tu sais bien que tu peux placer dans le presse-papier à peu près n'importe quoi - une sélection de fichiers, une sélection de cellules d'un tableau Excel, une partie d'une page internet, ... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Contenu du presse-papier Ven 24 Nov 2017 - 22:42 | |
| Bonsoir Klaus,
On s'est croisés, effectivement j'étais justement en train de lire la doc de la fonction GetClipboardFormat de KGF.dll, et de m'aperçevoir que le problème était bien plus compliqué que je pensais. Bon, eh bien je vais en rester là (forcément !), avec mon texte et mes images.
En ce qui concerne les applications en Panoramic, on ne peut pas lire du binaire depuis le presse-papier, mais on ne peut pas non plus en mettre. Donc la fonction peut peut-être servir quand même... je me console comme je peux...
Bonne soirée à toi en tout cas, et merci pour les précisions. | |
|
Contenu sponsorisé
| Sujet: Re: Contenu du presse-papier | |
| |
|