Page 1 sur 1

Editeur PureBasic : Capturer une portion de code

Publié : sam. 05/oct./2013 18:26
par falsam
Avec une API Windows, il est possible de capturer une portion de code sélectionnée dans l'éditeur de Pure basic.
Sauvegarder et créer un exécutable du code ci-dessous puis intégrer l’exécutable dans les outils de Pure Basic.

Code : Tout sélectionner

HandleIDESci=Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
SendMessage_(HandleIDESci, #WM_COPY,0,0) 

MessageRequester("Information capturée",GetClipboardText())
Sélectionner une portion de code de n'importe quelle source et lancer l'outil que vous venez d'intégrer.

Ma question est la suivante : Est il possible de faire la même chose sans passer par une api ?

S'agissant d'un éditeur scintilla, j'ai tenté de le faire avec ScintillaSendMessage() mais sans résultat. Peut être que je m'y suis mal pris. Merci de votre aide :)

Re: Editeur PureBasic : Capturer une portion de code

Publié : sam. 05/oct./2013 19:37
par Backup
....

Re: Editeur PureBasic : Capturer une portion de code

Publié : sam. 05/oct./2013 20:31
par falsam
Ton code ne peux pas fonctionner si on cherche à capturer du texte figurant dans l'éditeur officiel de Pure Basic.

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 16:17
par Backup
......

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 17:02
par Backup
j'ajoute que ton petit prg externe , qui surveille si le press papier est rempli
peut aussi analyser le contenu , le changer

ensuite il suffirai de convenir d'une couleur de fenetre , qui t'indiquera , qu'un Ctrl+V est possible
pour modifier la selection de l'editeur ... ;)

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 17:07
par falsam
Dobro a écrit :j'ajoute que ton petit prg externe , qui surveille si le press papier est rempli
peut aussi analyser le contenu , le changer
Oui tu as raison je l'avais oublié ce petit code. Mais le but de mon utilitaire est de charger une portion de code sélectionnée par un utilisateur sans que l'utilisateur utilise la combinaison de touche Ctrl+C pour copier en mémoire. C'est vrai aussi qu'un Ctrl+C c'est pas le bout du monde :mrgreen:

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 17:12
par Backup
falsam a écrit : Mais le but de mon utilitaire est de charger une portion de code sélectionnée par un utilisateur sans que l'utilisateur utilise la combinaison de touche Ctrl+C pour copier en mémoire.
oui c'est bien ce point qui me chagrine ... :)
perso, je force toujours une action de l'utilisateur , le ctrl+c...ctrl+v reste un basique :)

ton prg de surveillance, peut aussi emettre une petite musique, pour dire qu'il est rempli
et une autre pour dire que le contenu a été modifié :)

(voir utilisation de la synthese vocal ... message pré enregistré ) )

j'aime bien utiliser les synthetiseur en ligne :
http://www.acapela-group.com/text-to-sp ... -demo.html

tu tapes tes phrases , tu enregistres avec Audacity
et tu met tes sons dans ton soft ! :)

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 17:18
par Backup
message edité ;)

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 17:23
par falsam
pas mal ce synthétiseur. Merci pour le lien.

Re: Editeur PureBasic : Capturer une portion de code

Publié : dim. 06/oct./2013 18:33
par nico
Je ne sais pas si j'ai tout suivi mais un argument dans les outils personnalisés te permet de récupérer la portion de code sélectionné:

%SELECTION qui te donne la réponse sous forme ligne debut * colonne debut * ligne fin * colonne fin --> 15*1*16*5

donc il faut le combiner avec %COMPILEFILE POUR AVOIR LE TEXTE ENTIER et ensuite avec les coordonnées récupérer la portion de texte sélectionnée.

Re: Editeur PureBasic : Capturer une portion de code

Publié : ven. 11/oct./2013 20:36
par falsam
Merci Nico pour cette information qui m'a menée aux variables d'environnement de Pure basic.

La variable d'environnement PB_TOOL_Selection depuis un outils externe (Pour ne pas le citer Code Form Helper :mrgreen: ) me permet de connaitre les paramètres de sélection dans l'ide.

Il me restait plus qu'à connaitre le fichier concerné. je pensais m'en sortir avec la variable d'environnement PB_TOOL_FileList et là ...... c'est le drame : Dans le cas d'un projet cette variable renvoie les noms de tous les fichiers référencés dans ce projet.

La combinaison PB_TOOL_Selection & PB_TOOL_FileList ne peut plus fonctionner.

Je suis de nouveau obligé de passer par la variable PB_TOOL_Scintilla pour connaitre le handle du gadget scintilla de l’éditeur Pure Basic ou l'éditeur JaPbe et de passer par une API Windows pour capturer la sélection utilisateur.

Code : Tout sélectionner

  ;Si l'utilitaire est lancé en temps qu'outil : Mémorisation de la sélection
  HandleIDESci=Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
  
  If HandleIDESci
    SendMessage_(HandleIDESci, #WM_COPY,0,0)   
  EndIf
A cause de cette API mon utilitaire ne peut pas être compilé pour environnement Mac et Linux (Sous réserve d'avoir un Mac :p)

Re: Editeur PureBasic : Capturer une portion de code

Publié : ven. 11/oct./2013 22:12
par falsam
Quel serait l'équivalence de SendMessage_(HandleIDESci, #WM_COPY,0,0) sous environnement Linux et Mac OS ?