FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Un prg Panoramic s'abime avec le temps
par papydall Aujourd'hui à 3:14

» Planétarium virtuel.
par Pedro Alvarez Hier à 16:58

» Dessin 2D: largeur de trait (résolu !)
par Jicehel Hier à 15:16

» Promenade dans le Ciel
par papydall Hier à 3:13

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Sam 23 Juin 2018 - 17:00

» Nouvelle version 0.34
par jean_debord Sam 23 Juin 2018 - 9:39

» Quantité de mémoire utilisée par un exe
par mindstorm Jeu 21 Juin 2018 - 21:22

» Projet de planétarium virtuel.
par Jean Claude Jeu 21 Juin 2018 - 19:02

» Animation: Feux de signalisation
par Minibug Mer 20 Juin 2018 - 20:28

» Problème avec 'file_load'.
par Pedro Alvarez Lun 18 Juin 2018 - 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Contenu du presse-papier

Aller en bas 
AuteurMessage
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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).aspx

Tu 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, ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 6292
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Contenu du presse-papier   

Revenir en haut Aller en bas
 
Contenu du presse-papier
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Récupérer des images du presse-papier
» Un presse-papier amélioré
» Foxit Reader et ASK
» [Résolu] mettre l'animation dans le presse papier
» Paper Case : protéger vos CD avec une feuille de papier

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: