IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Récupérer une variable globale d'une application exterieure


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut Récupérer une variable globale d'une application exterieure
    Bonjour à tous !

    Alors mon soucis aujourd'hui est de réussir à faire communiquer deux applications distincte, sachant que l'une de ces deux est une application qui n'est pas du tout prévue pour ça :p

    Je m'explique, j'appellerais ces deux applications A1 (A1 est programmé par mes soins) et A2.
    A1 controle A2 en utilisant le handle de ses composants, mais pour savoir comment réagit A2, j'ai besoin de récupérer des variables Globale de A2.

    Je peux générer des variable globale via script LUA sur A2, et j'aimerais récupérer ces variable sur A1, mais je n'ai pas la moindre idée de comment faire :S

    Existe t-il un moyen de récupérer l'adresse mémoire de cette variable en ayant son nom?


    En vous remerciant par avance

    Edit : Est-il possible de trouver le pointeur d'une variable appartennant à une appli externe? De cette facon, je pourrais récupérer les infos qui m'interressent sous mon appli delphi ...


    Edit : Je n'ai pas trouvé comment faire ceci mais j'ai trouvé une alternative à mon problème :p

    Je fais mettre à jour un fichier texte par l'application secondaire que j'interpreterais avec mon appli ^^

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 141
    Points : 142
    Points
    142
    Par défaut
    Salut,

    Il y a quelques trucs dans ton problème que je n'ai pas bien compris :
    l'appli A2, c'est toi qui l'a codée aussi? tu en as les sources? elle est écrite en quoi?
    quel genre de sortie propose-t-elle en standard? Tu dis que tu passes par le handle de ses composants par exemple, est-ce que tu peux récupérer le résultat des opérations qu'elle effectue entièrement à partir de l'état de ces composants (ie: le log des opérations apparaît dans un memo, tu peux "lire" l'état d'une variable booléenne en lisant l'état d'une checkbox, d'une variable entière en lisant un edit ou un label...)?

    Un moyen rapide de faire communiquer tes 2 applis est effectivement de passer par un fichier texte. Cela suppose que A2 peut écrire les infos que tu veux sur un output...

    Si tu as le code de ton appli A2, tu peux toujours lui faire renvoyer un pointeur vers une variable. A ton appli A1 de récupérer ce pointeur, et de le caster dans le bon type pour interpréter le contenu.

    Si tu ne peux pas modifier le code de A2, et que tu cherches à accéder à une variable que A2 ne "publie" pas, je ne vois pas de moyen simple. Je pense qu'il reste juste le hack brutal de la zone mémoire de l'appli A2 - je ne suis pas expert en ce genre de chose, si A2 n'a aucune info de debug, je ne vois pas bien comment faire...

    En espérant avoir fait avancer le schmilblick,

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    salut,

    si tu as effectivement le controle des 2 applis et que tu veux echanger des entiers, tu peux utiliser PostMessage/ SendMessage .

    La mise à jour vers l'appli 2 est evenementiel, c tjs mieux que le fichier.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 115
    Points : 70
    Points
    70
    Par défaut
    Non je ne possède le controle que de la premiee application, la seconde est déja codé je ne peux rien modifier je ne dispose pas des sources ^^ (Cette appli est codé en C++)

    La seconde application est scriptable, je la controle via script XML et LUA, j'ai testé la communication via fichier texte mais hélas je me retrouvais avec des erreurs lorsque les deux applications essayaient de lire ou d'écrire en même temps :S

    J'ai résolu ceci en bidouillant à l'extrème : Les deux applications communiquent via la génération de fichier dans un repertoire commun.
    Ces fichiers ne contiennent aucune information autre que leur nom, je fais faire des scans régulier par les deux appli du répertoire et ensuitent elles réagissent en fonction des noms de fichiers présents.

    C'est assez primitif, mais aucun risque d'erreur lorsqu'elles scannent en même temps le répertoire.
    Les deux applications n'ont besoin d'échanger que trés peu d'informations pour fonctionner correctement, toutjuste quelques variables de temps en temps.

Discussions similaires

  1. Récupérer un variable globale dans une fonction.
    Par toufou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/08/2010, 14h42
  2. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  3. Réponses: 4
    Dernier message: 14/05/2007, 13h44
  4. Réponses: 9
    Dernier message: 16/03/2006, 20h34
  5. Réponses: 11
    Dernier message: 08/02/2006, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo