OVH Cloud OVH Cloud

Récupérer les attributs d'un control d'une autre appli

4 réponses
Avatar
dieb
Bonsoir,

Peut-on lancer et récupérer, à partir d'un programme A, certaines
caractéristique (de l'interface graphique par exemple) d'un autre
programme, totalement différents.

Exemple de cas : Je voudrai savoir lorsque je lance Word, si la police
par défaut est bien Futura, ou bien que le bouton "Afficher/Masquer"
soit bien présent mais non activé, et tout ca, à partir d'un programme.

En fait je parle de Word parce que c'est parlant, mais cela pourrait
être Adobe acrobat reader (pour d'autres settings), ou bien Siebel, etc...

Je pense (mal?) qu'il faudrait lancer ces applications depuis le
programme A, et récupérer les noms et attributs des contoles concernés.

1° Pensez vous que c'est illusoire, ou même pas du tout faisable
techniquement.
2° Si c'est faisable, avez vous des pistes à explorer?

Merci de votre aide.

4 réponses

Avatar
Aurélien REGAT-BARREL
> 1° Pensez vous que c'est illusoire, ou même pas du tout faisable
techniquement.
2° Si c'est faisable, avez vous des pistes à explorer?



C'est plus ou moins faisable, mais pas de manière générique. Word et Excel
sont pilotables via l'Automation (COM), il faut voir s'ils permettent de
savoir ce que tu veux.Siebel je connais pas.
http://msdn.microsoft.com/library/en-us/dv_wrcore/html/wroriAutomatingWordUsingWordObjectModel.asp
http://partners.adobe.com/public/developer/acrobat/sdk/index.html
Si tu ne veux pas passer pas l'Automation, ben faut étudier avec Spy++
l'interface du logiciel, et bricoler (car c'est du bricolage) un truc en
espérant que ça marchera toujours pour la prochaine version...

--
Aurélien REGAT-BARREL
Avatar
Christian ASTOR
dieb wrote:

Je pense (mal?) qu'il faudrait lancer ces applications depuis le
programme A, et récupérer les noms et attributs des contoles concernés.



Non, si par ex. Word est déjà lancé, on fait CLSIDFromProgID()
("Word.Application")-GetActiveObject()-::QueryInterface() pour avoir
l'IDispatch de l'instance courante.
On n'a plus ensuite qu'a appeler les différentes propriétés, si elles
existent ds la doc pour ce qu'on cherche.
Avatar
dieb
Aurélien REGAT-BARREL wrote:

C'est plus ou moins faisable, mais pas de manière générique. Word et Excel
sont pilotables via l'Automation (COM), il faut voir s'ils permettent de
savoir ce que tu veux.Siebel je connais pas.
http://msdn.microsoft.com/library/en-us/dv_wrcore/html/wroriAutomatingWordUsingWordObjectModel.asp
http://partners.adobe.com/public/developer/acrobat/sdk/index.html
Si tu ne veux pas passer pas l'Automation, ben faut étudier avec Spy++
l'interface du logiciel, et bricoler (car c'est du bricolage) un truc en
espérant que ça marchera toujours pour la prochaine version...




Merci de ces réponses.
Je pense m'être mal exprimé, je vais donc essayer d'expliciter ce que je
cherche.

Déveoppeurs, je pense que vous connaissez aussi bien que moi les
produits de test, tels que ceux développés et commercialisés par Mercury
par exemple, et pour ne citez que cette société.

Ces produits, une fois lancés eux-mêmes, permettent de lancer une
aplication tierce (n'importe quelle application, inutile qu'elle soit
connue du logiciel), d'en capturer des séquences de click sur certains
controls, d'en obtenir les valeurs (le caption d'un control par
exemple), et de rejouer ces captures.

Ce que je cherche, c'est comprendre les mécanismes sous-jacents, pouvant
être mis en place pour obtenir cela. Par exemple, lors d'un click de
souris sur le bouton "Ok" d'une application lambda, est-il possible d'n
récupérer les attributs (du moins essentiels).

J'éspère avoir été un peu plus clair, même si j'ai bien compris vos
réponses précédentes.
Avatar
Aurélien REGAT-BARREL
> Ces produits, une fois lancés eux-mêmes, permettent de lancer une
aplication tierce (n'importe quelle application, inutile qu'elle soit
connue du logiciel), d'en capturer des séquences de click sur certains
controls, d'en obtenir les valeurs (le caption d'un control par
exemple), et de rejouer ces captures.

Ce que je cherche, c'est comprendre les mécanismes sous-jacents,
pouvant être mis en place pour obtenir cela. Par exemple, lors d'un
click de souris sur le bouton "Ok" d'une application lambda, est-il
possible d'n récupérer les attributs (du moins essentiels).



Ben il te faut un peu étudier la programmation Win32, comment ça marche
derrière. Chaque composant style bouton, edit, list, est une fenêtre, au
même titre qu'une fenêtre principale avec une barre de titre. Ce sont des
fenêtres spécialisées, qui se dessinent / réagissent d'une certaine manière.
Mais ça reste des fenêtre, manipulables via les fonctions dédiées:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows.asp
Par exemple FindWindow permet d'effectuer une recherche, Enum[Child]Windows
d'énumérer les fenêtres existantes, WindowFromPoint de trouver la fenêtre
qui se trouve sous un point donné...
Joue avec Spy++ pour comprendre comment ça marche tout ça.
C'est valable pour les fenêtres Win32. Certains toolkits ne respectent pas
ce "standard", voire font tout à leur manière, genre SWING. Là ça ne marche
pas...

--
Aurélien REGAT-BARREL