Récupérer le texte de l'onglet actif de l'éditeur PB...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

Salut,

Je voudrais Récupérer le texte de l'onglet actif de l'éditeur PB, depuis un autre programme, comme je peut faire ça svp ?
Je voudrais que mon programme scanne le texte dans l'onglet actif de PB pour l’analyser, faire des vérification etc...
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par venom »

Bonjour,

Tu as les infos dans le fichier : PureBasic.prefs qui se trouve dans : C:\nom d'utilisateur\AppData\Roaming\PureBasic :wink:
Bien évidement il faut afficher les fichiers cacher si ça n'est pas déjà fait.






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par falsam »

Shadow a écrit :Je voudrais que mon programme scanne le texte dans l'onglet actif de PB pour l’analyser, faire des vérification etc...
Faire des vérifications de ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

venom a écrit :Bonjour,

Tu as les infos dans le fichier : PureBasic.prefs qui se trouve dans : C:\nom d'utilisateur\AppData\Roaming\PureBasic :wink:
Bien évidement il faut afficher les fichiers cacher si ça n'est pas déjà fait.
Salut, est ce que tu es bien sur de ça ?

Voici ce que j'ai écris:
Salut,

Je voudrais Récupérer le texte de l'onglet actif de l'éditeur PB, depuis un autre programme, comme je peut faire ça svp ?
Je voudrais que mon programme scanne le texte dans l'onglet actif de PB pour l’analyser, faire des vérification etc...
Je voudrais recevoir le texte de l'onglet actif de PB, celui qui est actuellement éditer dans PB, en temps réel, dès qu'il y à une modification
et je ne vois pas en quoi le fichier PureBasic.prefs a à voir là dedans ?

@falsam, vérification de la syntaxe en temps réel.


@++
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
venom
Messages : 3072
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par venom »

Shadow a écrit :Je voudrais Récupérer le texte de l'onglet actif
Personnellement, je comprends que tu souhaite récupérer le titre de l'onglet. Et ma méthode est bonne. Par contre si tu souhaite récupérer le texte contenu dans l'onglet actif, là c'est pas la même chose. :wink:
Mais grâce au fichier PureBasic.prefs tu peux récupérer le chemin du fichier qui est susceptible d'être modifié, et ainsi scanner se dernier en cas de modification :wink:






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Marc56 »

Sans oublier %temp%\PB_EditorOutput.pb qui garde la source du dernier fichier compilé dans l'IDE (tant que celui-ci reste ouvert)

:idea: Utiliser les variables système Windows permet de faire des programmes compatibles quelque soit le disque, répertoire de Windows et le nom d'utilisateur.

Répertoire temporaire et répertoire des données des programmes. (donc .prefs)

Sous "dos" ou avec l'explorateur

Code : Tout sélectionner

dir %temp%
dir %appdata%\purebasic
Sous PB

Code : Tout sélectionner

Debug GetTemporaryDirectory()
Debug GetUserDirectory(#PB_Directory_ProgramData) ; PB 5.60
:wink:
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

Merci Marc56.

Je ne veux pas récupérer le texte que quand le programme est compilé ou enregistrer, mais dès qu'il est modifié !
Il faut que j’accède à l'onglet actif de PB pour récupérer le code qui est tapé !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

J'ai trouvé ça, mais ça ne fonctionne pas, les variable n’existe pas:

Code : Tout sélectionner

;Handle de l'IDE / Handle of IDE
HandleIDESci=Val(GetEnvironmentVariable("PB_TOOL_Scintilla")) 

If HandleIDESci 
  ;Position du curseur dans le source en cours d'édition / Cursor position in the source being edited
  SendMessageTimeout_(HandleIDESci,#SCI_GETSELECTIONSTART, 0, 0, #SMTO_ABORTIFHUNG, 2000, @CursorPosition)
 
  ;Mémorise la position du curseur pour l'indentation (Nombre d'espaces avant le mot clé)
  ;Stores the cursor position For indentation (Number of spaces before the keyword)
  LigCol = GetEnvironmentVariable("PB_TOOL_Cursor") ;Lig x Col
EndIf
 
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Marc56 »

J'ai trouvé ça, mais ça ne fonctionne pas, les variable n’existe pas:

Code : Tout sélectionner

GetEnvironmentVariable("PB_TOOL_Scintilla")
Merci de ne pas oublier de citer l'auteur: viewtopic.php?f=6&t=16967

La doc indique pourquoi ça ne marche pas dans ce cas là.
:arrow: https://www.purebasic.com/french/docume ... tools.html
« Notez que celles qui donnent des informations sur le fichier en cours d'édition ne sont pas accessibles pour les outils exécutés au démarrage ou à la fermeture de l'IDE. »
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

Désolé :oops:
;-=============================================================================
; Project ...... : Editor Helper
; Name ......... : EditorHelper.pb
; Type ......... : Main Code
; Author ....... : falsam
; CreateDate ... : 03, October 2017
; Compiler ..... : PureBasic V5.60 (x86)
; Flags ........ : None
; Subsystem .... : none
; TargetOS ..... : Windows
; License ...... :
; Link ......... :
; Description .. : IDE TOOLS - Automatically generates the end keyword of a keyword.
;==============================================================================
Merci !
Comment faire pour copier le texte dans l’éditeur de PB vers une variable ?
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par falsam »

Un peu de lecture :

L'IDE fournit des informations supplémentaires pour les outils sous la forme de variables d'environnement. Elles peuvent être facilement lues par l'outil à l'aide des commandes de la bibliothèque Process.

Voici une liste des variables fournies. Notez que celles qui donnent des informations sur le fichier en cours d'édition ne sont pas accessibles pour les outils exécutés au démarrage ou à la fermeture de l'IDE.
PB_TOOL_IDE - Chemin complet et nom de l'exécutable de l'IDE
PB_TOOL_Compiler - Chemin complet et nom de l'exécutable du compilateur
PB_TOOL_Preferences - Chemin complet et nom du fichier des préférences de l'IDE
PB_TOOL_Project - Chemin complet et le nom du projet actuellement ouvert (le cas échéant)
PB_TOOL_Language - Langue actuellement utilisée dans l'IDE
PB_TOOL_FileList - Liste de tous les fichiers ouverts dans l'IDE, séparés par un Chr(10)

PB_TOOL_Debugger - Ces variables fournissent les paramètres correspondant à ceux de la fenêtre d'options de compilation

PB_TOOL_InlineASM pour le source en cours. Elles sont à 1 si l'option
PB_TOOL_Unicode est activée, à 0 sinon.
PB_TOOL_Thread
PB_TOOL_XPSkin
PB_TOOL_OnError

PB_TOOL_SubSystem - Contenu du champ Bibliothèque Sous-système dans les options de compilation
PB_TOOL_Executable - Identique au mot-clef %COMPILEFILE pour la ligne de commande
PB_TOOL_Cursor - Identique au mot-clef %CURSOR pour la ligne de commande
PB_TOOL_Selection - Identique au mot-clef %SELECTION pour la ligne de commande
PB_TOOL_Word - Identique au mot-clef %WORD pour la ligne de commande

PB_TOOL_MainWindow - Identifiant système (Handle) de la fenêtre principale de l'IDE
PB_TOOL_Scintilla - Identifiant système (Handle) du composant d'édition de code Scintilla pour le source en cours


:idea: Important : Ton utilitaire doit etre lancer en temps qu'outil de ton IDE pour que ça fonctionne
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par falsam »

Ce petit code va te donner une approche de ce que tu demandes.

L'objectif est d'afficher dans un MessageRequester() le contenu d'une sélection partiel ou totale d'un code de la fenêtre active de ton IDE.

Code : Tout sélectionner

;IMPORTANT TON UTILITAIRE DOIT ETRE LANCER EN TEMPS QUE OUTIL DE L'IDE
Define Buffer.s

HandleIDESci = Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
If HandleIDESci
  SetClipboardText("")
  SendMessage_(HandleIDESci, #WM_COPY, 0, 0)
  
  Buffer = GetClipboardText()
  MessageRequester("Contenu", buffer)
EndIf
1 - Crées un exécutable que tu appelleras test ou ce que tu veux ;)
2 - Installes maintenant test.exe dans les outils de l'IDE
Pour cela tu cliques sur le menu Outils puis Outils personnalisés .
Cliques sur le bouton Nouveau.

Image

Entres les paramètres comme le montre cette image puis cliques sur le bouton Ok.

3 - Tu peux tester ce formidable outil en sélectionnant une partie de ton code puis Menu Outils -> Test
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par Shadow »

@Falsam, t'es top, merci infiniment de ton aide !
Par contre j'aurais voulus autre chose qu'une sélection...

Je ne veux pas sélectionné un texte dans l'id pour l'avoir, je voudrais le récupérer dès qu'il y à une modification...
Merci encore.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par falsam »

je voudrais le récupérer dès qu'il y à une modification...
C'est l'utilisateur qui appelle ton outil. L'outil ne sera pas capable de faire ce que tu souhaites.

Je te propose un autre code similaire au précédent. La différence est que l'utilisateur n'a pas besoin de faire une sélection.

Tout le code est sélectionné et copier dans une variable quand l'utilisateur lance l'outil.

Code : Tout sélectionner

;IMPORTANT TON UTILITAIRE DOIT ETRE LANCER EN TEMPS QUE OUTIL DE L'IDE
Define Buffer.s

HandleIDESci = Val(GetEnvironmentVariable("PB_TOOL_Scintilla"))
If HandleIDESci
  SetClipboardText("")
  
  ; Sélectionner le code
  SendMessage_(HandleIDESci, #EM_SETSEL, 0, -1)
  
  ; Copier la sélection en mémoire 
  SendMessage_(HandleIDESci, #WM_COPY, 0, 0)
  
  ; Annuler la sélection
  SendMessage_(HandleIDESci, #EM_SETSEL, 0, 0)
  
  Buffer = GetClipboardText()
  MessageRequester("Contenu", Buffer)
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Récupérer le texte de l'onglet actif de l'éditeur PB...

Message par falsam »

Ooops j'ai dit une bêtise. Un outil de l'IDE peut être lancer sur événement dont liste ci dessous.

Image

L’événement que tu souhaites (Modification du code) n'est pas pris en compte. par contre ton outil peut se déclencher si l'utilisateur enregistre le code.

Lien : https://www.purebasic.com/french/docume ... tools.html
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre