Communication entre applications / Datagrid - API Win32 - Programmation
Marsh Posté le 05-06-2009 à 11:15:23
Quelle est la classe du StringGrid ?
Marsh Posté le 05-06-2009 à 14:36:18
Il s'agit d'un TStringGrid (composant Delphi, langage avec lequel est fait le programme tiers).
Cependant les applications avec qui je dois communiquer utilisent plusieurs types de composants (TStringGrid, TDBGridPro, ...)
Merci
Marsh Posté le 05-06-2009 à 10:49:19
Bonjour,
Je réalise une application permettant d'extraire des données contenues dans la fenêtre d'une application externe créée par une société tierce.
Ainsi, pour repérer la fenêtre j'utilise le système de "Handle" qui permet à Windows d'identifier les différents éléments de l'interface.
Cependant je n'arrive pas à accéder à certains éléments comme les contenus des dataGrid pour qui Windows ne voit qu'un seul handle de fenêtre pour l'ensemble des éléments qu'il contient.
J'utilise notamment "Greatis Windowse", un programme qui identifie le "handle" de chaque élément de l'interface (donnant également d'autres infos comme les fils, les classes des éléments, ...).
Par exemple, dans la capture suivante, nous pouvons identifier plusieurs éléments qui sont: La fenêtre en elle-même, le StringGrid, un champ de texte et un bouton.
Tous ces éléments sont alors identifiés par un handle unique. Ainsi, lorsque je demande à Windowse de m'afficher, par exemple, les infos sur le champ texte, celui-ci, en plus de me donner le handle de ce champ, me donne son contenu: "Exemple de contenu".
J'arrive sans problème à accéder au contenu texte du champ Input ou a provoquer à distance le clic sur le bouton (par exemple avec PostMessage(TheHandle, WM_LBUTTONDOWN, MK_LBUTTON,0).
Cependant, de la même manière, lorsque je demande des informations sur le StringGrid, celui-ci ne me donne qu'un seul et unique handle identifiant l'objet dans sa globalité (peu importe la case que je lui indique) ce qui m'empêche d'accéder à un "sous-objet" en particulier. Par exemple, j'aimerai connaître la chaîne de caractère située dans la case B2.
M'est-il possible de le faire ? Comment m'y prendre ?
Merci d'avance
DevLXApi