Récupérer et modifier une liste

Signaler
Messages postés
258
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

Il y a une application faite en cpp donc j'aimerais récupérer les données à l'intérieur d'une liste de données (multi colonne). La liste est créée par winforms.

Ma question est la suivante :

Croyez-vous qu'il est possible, à partir d'une librairie dynamique injectée dans l'application cible, de récupérer les données de la liste et de par la suite les modifier?

J'avais pensé à récupérer l'adresse mémoire de la liste winform et de créer une nouvelle variable liste winform. Par la suite récupérer ses infos à partir de cette nouvelle variable...

Qu'est-ce que vous en pensez? Si ce n'est pas clair, je vais reprendre mon explication sans aucun problème.

Merci
-Jn-

3 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Heu... Ce genre de manip sur du code managé c'est de la folie furieuse. La liste est très certainement morcelée dans la mémoire. Elle est gérée par un garbage collector... Bref, c'est mort.

Si la liste est affichée, utilises plutôt une méthode à base de GetWindowText.
Messages postés
258
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012

Salut,

Effectivement ça semble être pas mal complexe. Par contre j'ai trouvé ceci :

http://www.codeproject.com/KB/system/hooksys.aspx

Peut être que si je "hook" la fonction qui remplie la liste je pourrais avoir un bon contrôle sur la liste?

J'ai accès à l'exécutable mais je ne peux pas le modifier puisqu'il est sur un serveur à mon travail dont je n'ai pas l'accès. L'équipe de dev de l'outil que je veux modifier est terriblement lent et occupé sur d'autres trucs. Alors je veux faire mes modifs directement dans la mémoire. Cela me donnera une bonne pratique de ce genre de programmation en même temps.

Qu'en pensez-vous?

Merci ! -Jn-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Ce type de technique ne fonctionne pas non plus sur du code managé. Elle est basée sur une exploitation de la structure des exécutables natifs.

Le code managé est compilé à l'exécution. Les mécanismes de compilation et donc la structure du code généré par la CLR (Machine virtuelle dotnet) ne sont pas documentés (Et dépendent de la machine virtuelle). Et pas grand monde ne s'y est intéressé, car la plupart de gens ayant le temps et les connaissances suffisantes pour étudier le fonctionnement de la CLR considère le dotnet comme une fumisterie.

Comme je le disais, tu devrais plutôt t'orienter vers une récupération en GUI, peut être en passant par LVM_GETITEM si une liste dotnet est bien une list view windows.

Pour la récupération du handle sur la listview, tu peux regarder ce code.