[R] Communication "à-la-DOS" entre scripts non compilés

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

[R] Communication "à-la-DOS" entre scripts non compilés

#1

Message par ZDS »

Bonjour !

Je souhaite savoir si quelqu'un a déjà réussi à faire en sorte que deux scripts non compilés (c'est indispensable pour moi) puisse "dialoguer" à la manière d'une commande DOS.

Je m'explique :
1 - Je souhaite dans un script "Serveur.au3" écrire sur la sortie standard ou autre, de façon à pouvoir l'exécuter comme une commande ipconfig ou dir. Ca, je pensais avoir trouvé : ConsoleWrite("Hello!")
Malheureusement ça ne fonctionne que si on le compile en mode console.

Code : Tout sélectionner

C:\TestConsole>"C:\Program Files\AutoIt3\AutoIt3.exe" "C:\TestConsole\Serveur.au3"

C:\TestConsole>"C:\TestConsole\Serveur.exe"
Hello!
C:\TestConsole>
Pas du tout pratique dans mon cas donc. Ce que j'aimerai donc c'est :

Code : Tout sélectionner

C:\TestConsole>"C:\Program Files\AutoIt3\AutoIt3.exe" "C:\TestConsole\Serveur.au3"
Hello!
C:\TestConsole>
sans avoir à faire un compilation.

2 - Une fois le script Serveur.au3 opérationnel, je souhaite y faire appel et accéder à son message "Hello!" depuis un script "Client.au3", mais entre les Run, Execute, Shell pour lancer; et les StdIn/Out ou console (Read/Write) je m'y perds :s dans certains cas il faut le PID du process de départ, dans d'autres cas celui du processus d'arrivée... bref ^^

Merci d'avance, et n'hésitez pas à me demander des détails si je me suis mal exprimé ^^

A bientôt !
Modifié en dernier par ZDS le sam. 12 juin 2010 14:35, modifié 1 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#2

Message par Tlem »

Pour envoyer des informations en sortie 'comme MS-DOS' il vous faut impérativement une application console.
Donc le mode 'comme MS-DOS' ne peut pas s'appliquer dans votre cas.

Ensuite, pour la communication entre deux scripts/programmes, le sujet a déjà été abordé sur le forum.

Voici un récapitulatif des possibilités :
- Par l'échange d'information en mémoire.
- Par inscription dans un fichier temporaire ou base de registre.
- ou par envois des informations en tant qu'arguments.
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
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#3

Message par matwachich »

Ou encore, et je pense que c'est le must!!! en TCP en localhost (avec bien sur l'UDF TCP.au3 - cherchez sur le forum anglais -)
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#4

Message par Tlem »

Ha oui c'est vrais. On en avait aussi parlé !!!
Je l'avais déjà oublié. :roll:
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
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#5

Message par ZDS »

Bonsoir !

Pour ce qui est des propositions, j'aimerai avoir plus de détails dessus. Auriez vous des scripts d'exemple sous la main?
- info en mémoire, je ne vois pas de quoi il s'agit ^^
- fichier temp ou bdr, j'aimerai éviter autant que possible.
- info par argument, je vois, mais pas dans le sens voulu, Dans mon cas, A(client) appelle/lance B(serveur) mais c'est B qui doit rendre de l'information.
- par tcp, c'est un choix qui m'est impossible, les communications même en boucle locale sont loguées sur les ordis de mon boulot (outils de test/validation).

Merci d'avance, et à plus tard !
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#6

Message par Tlem »

Par arguments, c'est possible même dans ce sens, mais la gestion du script risque d'être plus que tendue ... :roll:
Pour l'échange mémoire, je vous laisse cherché sur le forum, mais perso je ne trouvais pas cette solution très simple à mettre en œuvre.
TCP/IP pas possible ... Ok

Donc même si vous voulez éviter, il ne reste plus grand chose en dehors de l'échange par fichier temporaire ou par la base de registre.
Je ne vois d’ailleurs pas en quoi cette méthode vous gène, car elle est très largement utilisée par bon nombre d'application et utilitaire.
De plus, d'après ce que vous dites, vos scripts ne seront pas compilés. Donc, vous n'avez pas de secrets. :wink:

Après, l'ultime solution, c'est la compilation du script ... :mrgreen:
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
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#7

Message par timmalos »

Ceci marche chez moi :


Programme Serveur

Code : Tout sélectionner

#include <WinAPI.au3>
_WinAPI_AttachConsole(-1) ; S'attache à la console du client (Programme parent)
;_WinAPI_WriteConsole()
ConsoleWrite("Ceci est un message du serveur")
Programme Client

Code : Tout sélectionner

#include <Constants.au3>

Local $foo = Run('"c:\Program Files\AutoIt3\AutoIt3.exe" "c:\Users\tim\Documents\serveur.au3"', @SystemDir, @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)

; Read from child's STDOUT and show
Local $data
While True
    $data &= StdoutRead($foo)
    If @error Then ExitLoop
    Sleep(25)
WEnd
MsgBox(0, "Debug", $data)
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#8

Message par Tlem »

Whouaaa, je ne connaissait même pas ce _WinAPI_AttachConsole ... :shock:

Comme de quoi, il y a presque toujours une solution pour tout avec AutoIt. :lol:
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
ZDS
Membre émérite
Membre émérite
Messages : 554
Enregistré le : jeu. 10 juin 2010 10:35
Localisation : 22300 Cul-d'chouette Langue-de-vache
Status : Hors ligne

Re: [..] Communication "à-la-DOS" entre scripts non compilés

#9

Message par ZDS »

Franchement, je commençais à desespérer, et ton script, Timmalos... Ce qui est génial c'est que si on le compile ça marche quand même :)
Alors là, les gars, vous êtes des stars ! Merci beaucoup ! :D
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Répondre