Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1484 connectés 

  FORUM HardWare.fr
  Programmation
  API Win32

  Trouver la DLL qui contient les contrôles vues à l'écran

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trouver la DLL qui contient les contrôles vues à l'écran

n°1850361
Celiphane
Posté le 12-02-2009 à 14:23:56  profilanswer
 

Bonjour,
 
Pour le moment indépendamment du langage final, quelles seraient selon vous les APIs Windows nécessaire pour réaliser ceci :
je souhaite trouver le chemin complet ou bien juste le nom de la DLL (ou de l'exe) depuis laquelle sont affichées les contrôles (ou leur container quoi) que je survole du curseur.
 
Exemple une appli qui load une assembly externe pour en afficher un panel avec des boutons dedans, en passant le curseur sur un de ces contrôles externes, je voudrais non pas obtenir l'appli source mais la DLL externe, véritable conteneur des contrôles. Est-ce clair ?
 
Pour l'instant j'en suis à WindowFromPoint qui me donne le handle de ce que j'ai sous le curseur, après je sèche car j'ai essayé plein de chose : j'obtiens bien le hinstance de l'appli mère, ou même le nom de la classe sous le curseur grâce à GetClassName, je suis capable de chopper le chemin de l'appli mère, mais jamais celui de la DLL.
 
Sous .NET (C# ou VB) je parviens pourtant à la voir (ma externe DLL) dans la liste des modules chargés par l'appli mère, avec des infos comme sa baseaddress ou son entrypoint, et même la mémoire qu'elle occupe, mais je n'arrive pas à recouper ça avec ce que j'extrait initialement de mon WindowFromPoint !
 
Est-ce possible seulement ? J'ai ECUMÉ le net pour trouver comment faire, ou même une appli qui le ferait, mais tout se limite à faire ce que fait Spy++ de MS par exemple. Help ?
 
Merci

mood
Publicité
Posté le 12-02-2009 à 14:23:56  profilanswer
 

n°1850540
Celiphane
Posté le 12-02-2009 à 18:43:35  profilanswer
 

C'est peut-être pas très clair ?

n°1850575
tpierron
Posté le 12-02-2009 à 21:30:23  profilanswer
 

Hmm, si je comprends bien, tu as des applications qui chargent des contrôles customs (autres que les classes définies dans comctl32.dll) via une dll. Tu voudrais pouvoir récupérer le nom de cette dll en pointant la souris au-dessus de ce contrôle, c'est ça ?
 
Je suis quasiment sûr que c'est infaisable. Le contrôle custom est enregistré via l'identité de l'application. Le système lui-même n'a aucunne idée que toute la logique se trouve dans une dll.
 
Le mieux que je puisse voir c'est lister les dll utilisé par le processus et procéder par élimination.

n°1850704
Celiphane
Posté le 13-02-2009 à 10:14:45  profilanswer
 

Merci pour cette réponse, tu as bien compris.
Effectivement, je parviens à lister les dll chargées (dont celles dont je survole les contrôles, container etc) mais je n'arrive pas à faire cette élimination.
 
De plus, une fois qu'une DLL est loadée, elle le reste : donc même si j'élimine les DLL classiques pour ne garder que les customs, cela restreint certes mais cela reste imprécis.
 
J'ai une piste mais je n'arrive pas à l'exploiter :
 
1 - Sous .NET, je liste les modules chargés, et pour chacun, j'ai la quantité mémoire qu'ils utilisent chacun.
2 - Avec les API, je récupère le window handle de ce que j'ai sous le curseur, et avec ça je peux avoir le parent du contrôles sous le curseur, le nom de la class (avec l'api GetClassName) : et là il y a deux API, GetClassLong et GetClassInfo, dont je n'arrive à rien tirer, qui devrait d'après MS me permettre de récupérer la mémoire utilisé.
 
Pensez vous que je puisse recouper les deux infos pour déterminer le module ? Enfin, si je parviens à utiliser ces API qui me retourne incéssament que dalle... :-(
 
Cdt


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  Trouver la DLL qui contient les contrôles vues à l'écran

 

Sujets relatifs
Trouver un petit script spécifique pour ceciphp : trouver jour semaine selon date
variable memoire partagée entre plusieurs instances d'une DLLUtiliser une DLL sur un ordinateur distant
ou trouver des exercices corrigés de sqlBoucle de messages dans une DLL
C# DLLDLL with C#
[SQL]Erreur que je ne parviens pas à trouver dans une requête?!Trouver le plus grand ecart entre 2 valeurs
Plus de sujets relatifs à : Trouver la DLL qui contient les contrôles vues à l'écran


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR