OVH Cloud OVH Cloud

Récupérer le nom d'un composant a l'execution...

4 réponses
Avatar
Tof
Bonjour,
j'ai crée une application (.net) qui tourne en tache de fond et qui récupére
le handle de n'importe quelle "fenetre" sur laquelle on déclenche une
séquece de touche.
Je récupere également la classename de cette fenetre mais je voudrai savoir
s'il est aussi possible de récupérer le "nom" du composant (y a til une api
windows particuliere pour ca ?)
Je m'explique : j'ai crée une app de test avec delphi (juste une form et un
TEdit dessus).
Je nomme "MyEdit" mon composant TEdit dans delphi..comment donc récupérer ce
fameux "MyEdit" dans mon app (je pense que ce n'est pas possible mais
bon...)??

Merci !

4 réponses

Avatar
Patrick Philippot
Bonjour,

Je nomme "MyEdit" mon composant TEdit dans delphi..comment donc
récupérer ce fameux "MyEdit" dans mon app (je pense que ce n'est pas
possible mais bon...)??



1. Pour que vous puissiez récupérer la propriété Name du composant
Delphi en question, il faudrait récupérer l'adresse du composant, ce qui
n'est déjà pas évident puisqu'il peut y avoir plusieurs contrôles sur la
fenêtre et que vous fassiez un transtypage de cette adresse vers une
variable du même type dans votre programme moniteur. Ce qui suppose
qu'il soit écrit en Delphi aussi. Et que vous sachiez de quel type de
composant il s'agit.

2. Le mot Composant a un sens bien différent selon le langage. Tous les
programmes surveillés ne seront pas écrit en Delphi.

Je ne sais pas ce que vous essayez de faire mais ce n'est pas le bon
moyen de toutes façon :-) .

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Arnaud Debaene
Tof wrote:
Bonjour,
j'ai crée une application (.net) qui tourne en tache de fond et qui
récupére le handle de n'importe quelle "fenetre" sur laquelle on
déclenche une séquece de touche.
Je récupere également la classename de cette fenetre mais je voudrai
savoir s'il est aussi possible de récupérer le "nom" du composant (y
a til une api windows particuliere pour ca ?)
Je m'explique : j'ai crée une app de test avec delphi (juste une form
et un TEdit dessus).
Je nomme "MyEdit" mon composant TEdit dans delphi..comment donc
récupérer ce fameux "MyEdit" dans mon app (je pense que ce n'est pas
possible mais bon...)??



Si ce que tu appelles "nom de composant" est bien ce que je pense, à savoir
le nom de la variable du contrôle dans le code source, alors cette
information a disparu au moment de la compilation et n'est pas présente dans
l'executable (ou la DLL) compilé...

Arnaud
MVP - VC
Avatar
yarocco
Si elle est toujours dispo, Delphi enregistre toutes les proprietes.
il faut par contre tomber sur un prog fait en Delphi, connaitre le type
(a la limite, ca c'est faisable avec les Api), et connaitre l'offset de
la propriete Name sur le composant (transtypage) et surtout connaitre
l'adresse du stockage des proprietes du composant (ca je sais pas du
tout comment faire...)
Avatar
Patrick Philippot
yarocco wrote:
Si elle est toujours dispo, Delphi enregistre toutes les proprietes.
il faut par contre tomber sur un prog fait en Delphi, connaitre le
type (a la limite, ca c'est faisable avec les Api), et connaitre
l'offset de la propriete Name sur le composant (transtypage) et
surtout connaitre l'adresse du stockage des proprietes du composant
(ca je sais pas du tout comment faire...)



Ce qui enlève tout validité à cette approche. D'un côté le moniteur
semble (nous avons peu de détails) être un programme générique de
"hooking" des messages et de l'autre, il ne fonctionnerait que si la
fenêtre objet du monitoring est un programme Delphi (et encore, ça ne me
paraît pas très simple). Il est possible a priori de savoir si une
fenêtre appartient à un programme Delphi (j'ai fait ça il y a longtemps)
mais franchement, tout ça ne me paraît pas sain du tout.

Il serait préférable que Tof nous explique ce qu'il veut faire.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr