[..] Informations sur les objets COM

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

[..] Informations sur les objets COM

#1

Message par TommyDDR »

Bonjour, suite au sujet : http://autoitscript.fr/forum/viewtopic.php?f=37&t=5001
en regardant ce que faisait WMICodeCreator (il trouve les attributs des objets WMI)
► Afficher le texteImage
je me suis demandé si l'on pouvait faire de même avec les objets COM.

Pour être plus précis :

Je me suis intéressé au contrôle de Windows Live Messenger par le biais d'AutoIt

Code : Tout sélectionner

ObjCreate("Messenger.UIAutomation.1)
Mais une fois l'objet créé, il est assez difficile de trouver toutes les méthodes et attributs que l'on peut utiliser sur cet objet.
C'est pourquoi j'aimerai savoir s'il était possible de lister les méthodes et attributs d'un objet COM.

2eme question :
Est il possible d' "installer" un objet COM ?
J'entends par la : Sur mon Windows XP, je n'ai pas d'objet Messenger.UIAutomation.1 alors que la même version de WLM est installé sur le XP et sur le seven, j'en déduit donc que ce n'est pas WML qui "installe" l'objet COM.
Si quelqu'un sait comment ajouter cet objet, qu'il se fasse entendre ^^.

3eme question (tant qu'on y es) :
Comment faire en sorte que lors d'une utilisation d'un attribut inexistant : $MonObjet.test, cela nous renvoie simplement un code d'erreur sans faire planter le programme ?

Merci à vous !
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Informations sur les objet COM

#2

Message par jchd »

Le gros problème avec COM est que seuls les objets et méthodes correctement documentés sont utilisables sans aller à la pêche plus ou moins à l'aveuglette.

WMI est documenté par M$.

1) voir l'aide sur obj/COM. En particulier, OLE/COM object viewer (avec le lien sur MSDN qui va bien).
Après, rien n'empêche une implémentation d'une méthode PRINT de l'objet TOTO de faire tout et le reste (jouer un MP3, désintaller une copie pirate, reformater une clé USB, ...) sans jamais rien imprimer... Le bon sens veut quand même que, la plupart du temps, les noms attribués soient à peu près explicites, mais cela n'a rien de formel et encore moins de contractuel, sauf documentation claire.

2) on ne choisit jamais (sauf exception qui confirmera) d'installer un support COM particulier, du moins au niveau utilisateur (ou même admin). C'est en général une application qui l'installe toute seule comme une grande le support COM dont elle a besoin ou dont elle veut faire bénéficier d'éventuelles applications utilisatrices, e.g. Office.

3) étant revenu de la pêche (cf. point 1), on connaît (encore une fois, à peu près) les méthodes et leurs interfaces prévues (à défaut de connaître leur principe de fonctionnement formel, sauf objets officiellement documentés). Si on tente un $oTOTO.Dump($cecicela) et que soit .Dump n'existe pas soit que la méthode requière une interface différente, seul un gestionnaire d'erreurs COM peut déceler la chose et éventuellement renvoyer un vague code, mais l'intérêt est minime. L'obligation d'unicité du gestionnaire d'erreurs COM imposée par AutoIt tel qu'il existe est un casse-tête supplémentaire.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Informations sur les objets COM

#3

Message par TommyDDR »

Donc si j'ai bien compris :

1) Il faut la doc.

2) C'est possible mais on ne le fait pas. Si c'est possible : Comment le fait-on ? ^^ parce que du coup j'aimerai bien ajouter Messenger.UIAutomation.1 sur mon XP. Étant donné qu'un même logiciel (WLM) installé sur XP ou seven n'ajoute pas l'objet, pouvez vous m'expliquer comment marchent les Objet COM.
J'en ai donc déduit que l'objet COM était présent sur les 2 OS (dans msnmgr.exe) mais accessible seulement sur seven (peut être une clé dans le registre).
D'où ma nouvelle question. Quels sont les éléments nécessaire pour avoir accès à un objet COM ?
dll ou exe + clé registre + ??

3) Le programme plantera obligatoirement si on fait appel à une méthode inexistante.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Informations sur les objets COM

#4

Message par jchd »

1) sans doc, on peut toujours faire des essais et bidouiller des choses. Google est aussi parfois de bon conseil, indépendemment d'AutoIt.

2) Un objet COM n'est accessible (utilisable) que s'il figure en entier dans le registre avec tout ce qui convient, class ID, paramètres, etc. Je vois mal comment extraire facilement les infos nécessaires et les seuls .exe, .dll, .ocx, ... requis sans recherches et comparaisons complexes avant/après installation. D'autant plus qu'un coup de WU (Windows Update) peut un jour sans prévenir mettre la pagaille dans une installation sauvage mal perçue (et pas prévue) par le système. A mon avis, c'est prendre un gros risque d'instabilité, ou pire, pour un gain pas évident.

Pour Messenger, je ne sais pas répondre tant le "bidule" est tentaculaire. Pour s'en convaincre, faire un simple recherche sur 'Messenger' dans le registre, tous éléments confondus. Prévoir un script AutoIt pour faire F3 automatiquement, sinon gare à la crampe. Il y a "des choses" accessibles sous XP, mais de là à pouvoir les exploiter...

3) non, il suffit de faire un return tout ce qu'il y a de commun.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2130
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Informations sur les objets COM

#5

Message par TommyDDR »

Hum, je pense que je vais simplement ne pas exécuter mon code sur un PC qui n'aura pas Messenger.UIAutomation.1 ^^'.

Merci pour ces infos.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Informations sur les objets COM

#6

Message par jchd »

C'est aussi là un piège du COM : lancer sur un parc de configurations hétérogènes : ça marche ... ou pas :mrgreen:
Ceci dit, c'est un jeu gratuit où on gratte juste du code, contrairement aux grat-grats que certains achètent à prix d'or par ribambelles en espérant trouver le bon code !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre