Page 1 sur 1

[UDF] AutoIt Application Extension

Posté : sam. 02 févr. 2013 18:12
par TT22
Bonjour à tous !

Suite à ce sujet, j'ai eu l'idée de créer un UDF qui permettrait de créer des extensions d'applications en AutoIt (pour AutoIt) et de pouvoir les utiliser par le biais d'un autre script (comme les DLLs pour Windows).

Donc, voici l'UDF :
► Afficher le texte
L'utilisation est assez simple, vous pour créer une extension, incluez l'UDF et appelez la fonction "_AAEInit()" au début de votre script. Puis ajoutez des fonctions à la suite. Et voilà !
Pour appeler une des fonctions présentes dans l'extension utilisez la fonction "_AAECall()".

Cet UDF fonctionne pour les scripts compilés où non et permet d'utiliser des extensions en AU3, A3X et EXE.

Voici un zip contenant un exemple d'utilisation et d'extensions :
AAE.zip
(286.93 Kio) Téléchargé 400 fois
Voilà, n'hésitez pas à poser des questions si mon explication n'est pas très claire :wink:

Re: [UDF] AutoIt Application Extension

Posté : sam. 02 févr. 2013 19:09
par Tlem
La simple association de la nouvelle extension sous Windows suffit largement ! Généralement ceci est fait lors de l'installation du programme qui doit utiliser cette nouvelle extension.

Re: [UDF] AutoIt Application Extension

Posté : sam. 02 févr. 2013 22:53
par TT22
En fait, je crois que je me suis mal expliqué :?
Cet UDF permet d'exécuter des fonctions présentes dans un autre script que celui en cours d'exécution (comme avec des DLL mais en AutoIt).
Et cela fonctionne pour les scripts AU3, A3X et EXE.
Ce qui peu par la suite permettre de modifier une fonctionnalité d'une application sans changer tout le script.

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 13:14
par jguinch
Bonjour
Super travail ! (rapide en+ :) ), ça répond exactement à ma problématique...

Petite suggestion : plutôt que de renvoyer le résultat dans un fichier temporaire, pourquoi ne pas passer par une code de sortie (exit) et récupérer le résultat avec shellexecute ?

Pour ma part, vu le trou de sécurité que représente l'externalisation des fonctions, je partirai sur les DLL (plus difficile à craquer...) ; autrement dit, c'est pas pour demain !

En tout cas, bravo et merci !

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 14:55
par matwachich
Pour la communication entre les scripts, préférez des UDF fais pour ça, je pense surtout à:
- MailSlot.au3
- Message.au3
à voir sur le forum anglais

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 15:39
par jchd
Il faudrait quand même souligner les nombreuses limitations inhérentes à ces méthodes.

EDIT: je fais référence au post initial !

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 18:39
par TT22
[color=#000000]jguinchard[/color] a écrit :Pour ma part, vu le trou de sécurité que représente l'externalisation des fonctions
Il suffit d'utiliser des fichiers A3X qui sont quand même assez bien protégés :wink:
[color=#000000]jguinchard[/color] a écrit :pourquoi ne pas passer par une code de sortie (exit) et récupérer le résultat avec shellexecute
J'y avait pensé, mais ça ne fonctionne pas si la fonction retourne une chaine de caractères :?
[color=#FF6600]matwachich[/color] a écrit :Pour la communication entre les scripts, préférez des UDF fais pour ça
Merci, je vais regarder ça :)
[color=#0000FF]jchd[/color] a écrit :Il faudrait quand même souligner les nombreuses limitations inhérentes à ces méthodes
À propos des retours de fonction dans des fichiers ? Du passage de paramètres ?

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 19:37
par Tlem
Effectivement, l'idée est intéressante et le système mis en place, bien trouvé. Cela oblige une certaine gymnastique, mais au moins, cela permet une ouverture intéressante vers le lancement de code extérieur.

Juste un petit reproche, c'est qu'il reste nécessaire d'avoir AAE.au3 en include du code externe. Pour de l'exe ou de l'a3x, c'est pas grave, mais pour du au3, cela oblige de rajouter le fichier et je trouve que ça limite pas mal de chose.

L'idéal aurait été un système identique aux fonctions 'PluginOpen/PluginClose' et qui libèrerait la contrainte de cet include sur le code externe.

L'idée de pouvoir lancer des fonctions sur des fichiers au3, a3x et exe (AutoIt) partait d'un bon sentiment, mais limite le champ d'action.
Comme cela oblige l'include de l'UDF des deux cotés, je pense qu'une simple fonction de traitement des arguments suffirait largement sans avoir besoin de rajouter quoi que ce soit. Le tout est de bien penser le fichier de code externe.

En faisant au plus simple et en image, voici ce que je veux dire :
► Afficher le texte
Edit : Bon, il y a eu quelques messages pendant la rédaction du miens. ;)

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 20:08
par jchd
Pour les limitations, elles portent sur : type et volume des paramètres et du retour, traitement alambiqué des conditions d'erreur, lenteur et lourdeur de l'invocation, inaccessibilité des valeurs globales de l'autre côté, asymétrie des contextes (PID, droits, etc.) et je dois en oublier bien sûr.

Tout ça limite donc les possibilités d'utilisation et ne prêche pas en faveur d'une généralisation en dehors de cas très limités AMHA.

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 21:03
par Tlem
+1
Mais cela avait déjà été évoqué cher ami : http://www.autoitscript.fr/forum/viewto ... 396#p75396

Re: [UDF] AutoIt Application Extension

Posté : dim. 03 févr. 2013 21:09
par jguinch
Dans le même style, avec MailSlot :
InterProcess UDF - Runs a remote function!

Re: [UDF] AutoIt Application Extension

Posté : lun. 04 févr. 2013 08:09
par Maurice
J'aime beaucoup l'idée. :D
Les DLL dans AutoIt sont limitées si l'on ne connait pas le C++.
Avec cette "méthode" il est plus facile d'inclure des fonctions, des PATH, ... susceptibles de
changer et donc de les mettre à jour sans re-compiler l'application mère.