[..] Librairies de fonctions

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
magicfab2008
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 24 août 2009 18:28
Status : Hors ligne

[..] Librairies de fonctions

#1

Message par magicfab2008 »

Bonjour,
ca fait plusieurs jours que je cherche, mais je ne trouve pas de réponses claires à ce propos ...
Etant donné ma grande confusion sur le sujet (et je m'en escuse), je vais poser mes interrogations en plusieurs questions :

1/ Comment construire des librairies en AutoIt que l'on puisse apeller depuis d'autres programmes ?
Actuellement je n'ai que des exécutables et je voulais savoir si je pouvais pas rassembler mes fonctions dans un unique executable.
Je sais qu'on ne peut pas construire des DLL en autoIt mais je ne cherche pas à faire des librairies 'Dynamiques'
J'ai cherché du coté des fonctions _WinAPI..() de AutoIt mais je ne comprends rien.
Si je dis pas de bêtises j'aimerai construire ma propre API ...

2/ DLLCall...() ?
Est ce qu'un quelqu'un pourrait m'aider à comprendre ce bout de code svp ? ( code donné en exemple dans le HelpFile d'AutoIt)
► Afficher le texte
Enfin,
3/Est-ce que quelqu'un aurait pris connaissance de la manière dont AutoItX a été mis en oeuvre ?

Actuellement je suis désespéremment à la recherche d'une solution.
En vous remerciant grandemment par avance.
Modifié en dernier par Yogui le lun. 12 sept. 2011 12:32, modifié 1 fois.
Raison : Edition du titre pour replacer la baslise
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: Librairies de fonctions [..]

#2

Message par zeshrek »

Pour la question 1, #include est ton ami
Pour les 2 autres... je laisse la paroles aux autres
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Librairies de fonctions [..]

#3

Message par Tlem »

#Include sera très bien avant compilation, mais là, il semble que magicfab2008 veuille faire la même chose qu'une DLL mais avec AutoIt et là, les choses vont vite devenir compliqué selon les cas ...

Puisque un exécutable AutoIt est un script interprété compilé (avec l'interpréteur intégré), vous ne pouvez appeler directement une fonction interne.
Par contre, rien ne vous empêche de faire des fonctions qui seront appelées en donnant à l'exécutable une suite d'arguments.
Par exemple :

Code : Tout sélectionner

MonScript.exe /function1 argument1 argument2 argument3
Mais attention, vous serez limité par le fait que les scripts étant séparés, la communication ne peut passer que par un échange de variables/paramètres extérieur.

Autres solutions :
- Comme l'à dit notre ami zeshrek, un fichier .au3 qui contiendrait toutes les fonctions que vous utilisez couramment et ajouté systématiquement à la compilation en tant qu'Include (vous pouvez aussi choisir de ne pas compiler votre code).

Utiliser l'outil AutoIt Snippet Holder (CTRL+ALT+S dans Scite4AutoIt) et lors de la réalisation de votre code, vous ajoutez au fur et à mesure les fonctions dont vous avez besoin (par contre la liste des fonctions doit avoir été créée avant ;)).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
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: Librairies de fonctions [..]

#4

Message par jchd »

2/ DllCall sert à appeler une fonction précise d'une DLL donnée, comme on le ferait avec un langage comme C.

3/ AutoItX est un source fermé (propriétaire). Concernant sa mise en oeuvre, voir la doc, par exemple.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
magicfab2008
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 24 août 2009 18:28
Status : Hors ligne

Re: Librairies de fonctions [..]

#5

Message par magicfab2008 »

Un grand merci à vous pour vos réponses,

1er solution : MonScript.exe /function1
Tlem, cette solution me semble très séduisante :

Code : Tout sélectionner

MonScript.exe /function1 argument1 argument2 argument3
Mais malheureusement, je ne suis pas arriver à appeler mes fonctions en ligne de commande depuis ma console Windows :(
J'ai écris tout bêtement
► Afficher le texte
Or depuis ma console, rien ne s'exécute ...
► Afficher le texte
Peut être que j'ai oublié quelquechose dans le source : un include, une fonction ... je ne sais pas
Je me concentre donc sur l'outil Snippet Holder (CTRL+ALT+S dans Scite4AutoIt) que je découvre depuis ce matin => donc merci Tlem pour l'info


2ieme solution : #includes
Parcontre je pense que cette solution est moins bien approprié à mon pb (si j'ai bien compris)
► Afficher le texte
En fait, j'aimerai offrir la possibilité à d'autres utilisateurs d'apeller des fonctions AutoIt depuis des systèmes indépendants (codé dans un autre langage)


Je continue à avancer dans mes recherches ...
Merci si vous avez d'autres idées
Avatar du membre
magicfab2008
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 24 août 2009 18:28
Status : Hors ligne

Re: Librairies de fonctions [..]

#6

Message par magicfab2008 »

Oups... je ne suis pas arriver à insérer l'image de ma console Windows dans le message précédent
donc voici l'image en fichier attaché

En apellant les fonctions, rien ne se passe ...
Fichiers joints
console Windows
console Windows
overflow
Niveau 5
Niveau 5
Messages : 138
Enregistré le : sam. 05 déc. 2009 23:49
Status : Hors ligne

Re: Librairies de fonctions [..]

#7

Message par overflow »

la reponse a ton probleme est : . . .

$CmdLine !! ^^

regarde ici

http://www.autoitscript.fr/autoit3/docs ... unning.htm


et pour exemple tu créer un fichier compiler avec juste ca dedans

Code : Tout sélectionner

MsgBox(0,"",$CmdLine[1])
Exit
 
et tu test en ligne de commande comme ceci :

Code : Tout sélectionner

fichier.exe /test
 
Répondre