logo

Knowledge Is Power

 
 

- Reinit des nouveaux posts -

- Recherche -

Messages Privés - Derniers posts
S'enregistrer - Login - Liste des membres
Vous logger : Login Pass

Programmation - Langages de Programmation >> API win32 Newtopic | Reply
poster txt
casskroot
Inscrit le 01-11-2003
Posté le 02-02-2015 19:24

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).

_________________________


[ Ce Message a été édité par: casskroot le 2015-02-02 19:25 ]
profil | mail | edit | quote
casskroot
Inscrit le 01-11-2003
Posté le 02-02-2015 21:19

Bon, il semblerait que pbdw115 signifie qu'il s'agit d'un programme développé avec PowerBuilder et que l'objet concerné est de type DataWindow.
Enfin c'est une hypothèse faite au pifomètre.

Un peu plus d'infos quand je pourrai passer un coup d'OllyDbg sur la bête.
_________________________

profil | mail | edit | quote
casskroot
Inscrit le 01-11-2003
Posté le 15-02-2015 09:47

Alors, pour ceux que ça pourrait éventuellement intéresser, le programme a été créé avec PowerBuilder 11.5 et l'élément auquel j'essayais d'accéder est de type DataWindow. Après pas mal de recherches et avoir consulté un forum spécialisé sur PowerBuilder, j'ai abandonné l'idée d'accéder directement aux données du DataWindow.
Mais, j'ai quand même réussi à faire ce que je voulais tout en apprenant pas mal de choses sur la prog windows (mais non sans avoir galéré lors des chasses aux bugs vicieux !). J'ai transformé l'immonde popup du logiciel en une vraie fenêtre popup, facile d'accès, qui attire l'oeil de l'utilisateur en cas de besoin et qui ne vole pas constamment le focus.
Pour ça, j'ai fait de l'injection de DLL et du sous-classage d’éléments window. Ca fonctionne, je suis 'achement content de moi et je sens déjà que mes collègues vont m'aduler.


Bon dimanche et à la prochaine.

_________________________


[ Ce Message a été édité par: casskroot le 2015-02-15 09:50 ]
profil | mail | edit | quote
Newtopic | Reply

Online : Alfredevert, Berekdub, CarolHesia, JamesBoire, KipplerNoni, Michaelexcat, MiguIdeomy et 92 Guests


Retour Index NewFFR Repository : http://taz.newffr.com
Cagades à Stick : http://alcane.newffr.com
Forum HTML et Archive -> ici
ForumFR Sql/Xml (2006/04) (SF pas à jour du tout...) - Alive since 2001 Newffr.com
Pour toute plainte ou problème -> Contacter Borax, Hyatus, Tweakie ou Stick par message privé (ou Gueulez sur le forum :) )
Retour haut de page