Salut,
dans le cadre de mon travail, j'utilise un application pour suivre les employés et communiquer avec eux.
Le problème est qu'elle a été codée avec les pieds et est très peu ergonomique. Son principal défaut étant d'ouvrir une popup en premier plan dès qu'un employé m'envoie un message (super pratique d'être coupé dans son travail toutes les 5 minutes !).
Il est possible de désactiver l'affichage de cette popup mais il faut alors régulièrement aller consulter un onglet du logiciel pour voir si on a un nouveau message non lu. Les messages non lus sont stockés dans un list view.
Je pensais donc coder une petite application qui utilise les API win32 pour régulièrement consulter le contenu de cette list view et avertir l'utilisateur de la présence de nouveaux messages par le biais d'une popup non intrusive.
Ce que j'ai fait :
- Utiliser EnumWindows pour lister les fenêtre ouvertes et détecter celle de l'application en question.
- Utiliser EnumChildWindows sur la fenêtre détectée pour trouver la fenêtre fille contenant la list view qui m'intéresse.
- Utiliser EnumChildWindows sur la fenêtre fille pour récupérer les handles des éléments qui la composent.
Tout ça a été fait sans trop de difficulté mais là où je bloque c'est que contrairement à ce que je pensais, si je récupère le nom de la classe de ma list view, je n'obtiens pas un objet list view mais un objet dont le nom de classe est pbdw115 (j'ai vérifié à l'aide de WinSpy++, c'est bien ma "list view" qui porte ce nom).
Si je refais un coup de EnumChildWindows sur le handle de cet élément, j'obtiens la liste d'enfants suivante :
ScrollBar
ScrollBar
Static
ScrollBar
Static
pbdwst115
pbdwst115
Edit
Edit
Edit
Edit
Edit
pbdwst115
Edit
pbdwst115
pbdwst115
Aucun de ces éléments ne semble posséder d'enfant.
Ma question est donc : est-ce que ça signifie que la list view est en fait un élément qui a été entièrement recodé par les développeurs ? Si c'est le cas, il y a quand même une approche qui pourrait me permettre d'avoir accès au contenu de la list view ?
Je ne comprend pas à quoi correspondent les élement Edit (c'est une list view sur laquelle l'utilisateur a uniquement un accès en lecture, pas en écriture). Quelqu'un a une idée ?
Merci d'avance pour les réponses et si vous avez besoin d'autres éléments, n'hésitez pas à demander (je répondrai dans la mesure du possible, l'environnement de travail étant virtualisé et n'ayant pas la possibilité d'y installer ce que je veux).
Partager