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

C++Builder Discussion :

Accès à une application ouverte (OLE Automation ?) [FAQ]


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Par défaut Accès à une application ouverte (OLE Automation ?)
    Bonjour,
    Soit une application A (qui tourne, lancée par l'utilisateur, qui récupère des données et les affiche dans une ou plusieurs MSFlexGrid)

    Je dois faire une application B qui soit capable de récupérer le contenu actuel des MSFlexGrid de l'application A.

    Pour l'instant, j'arrive à repérer le Handle de la fenêtre de l'appli A et les Handles des fenêtres de type MSFlexGridWndClass contenant chacune une MSFlexGrid. Par contre, de là, je n'ai aucune idée de ce qu'il faut faire pour récupérer le contenu des MSFlexGrid.

    Si quelqu'un a une idée, ou un conseil...
    Merci d'avance
    Pascal

  2. #2
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 9
    Par défaut
    Quelqu'un avait déjà posé cette question... Je te donne le lien vers le Post pour voir si tu y trouve des trucs qui peuvent t'intéresser...
    http://www.developpez.net/forums/viewtopic.php?t=3535
    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Par défaut
    Merci,
    Effectivement, ça ressemble un peu mais pour ce qui est du Pipe, de la mémoire partagée, de DDE ou du presse papier, c'est inutilisable :
    Je ne suis pas maître de l'application A, c'est pas moi qui l'ai écrite et j'ai pas les sources.
    Je ne suis maître que de l'application B.
    Je pense que la solution se trouve quelque part dans COM ou OLE Automation mais tous les exemples que j'ai trouvé créent eux-même l'instance ActiveX à utiliser (création d'un Classeur Excel, d'un document Word...) alors forcément, c'est + facile ensuite d'invoquer des propriétés (sur un objet créé par l'appli, on a déjà le pointeur qui va bien).
    Alors que dans mon cas, l'objet MSFlexGrid est créé par une autre application. Mon but est seulement d'y accèder dans mon application. Encore une fois, pour l'instant, je ne dispose que handle de la fenêtre contenant la MSFlexGrid (MSFlexGridWndClass).
    Merci encore pour tout renseignement.
    (je peux pas croire que personne ait jamais fait ça!)
    A++
    Pascal

  4. #4
    Invité de passage
    Inscrit en
    Juin 2002
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1
    Par défaut T'as deja trouvé une solution??????????????
    Je le même probleme que toi, et j'arrive pas à utiliser l'objet COM, si tu as trouvé la solution, svp svp svp svp svp svp laisse moi la voir!

    Salut!

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 3
    Par défaut Toujours pas...
    Hello,

    Ben non, je n'ai pas trouvé... j'ai même un peu laissé tomber en désespoir de cause.
    Si quelqu'un sait faire ça ou si tu trouves une solution, merci de la partager ici.
    Pascal

  6. #6
    Membre éprouvé
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Par défaut
    Bonjour,

    Il faudrait regarder du côté de GetActiveObject de OleAutomation.
    Dans le principe, CreateObject deonne une ainstance Variant de l'object automation à utiliser et GetActiveObject donne une instance déjà existante.

    Je regarde de plus prés.

  7. #7
    Membre éprouvé
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Par défaut
    Bonjour,

    Je te confirme que ça marche.
    J'ai fait le test avec Excel. Si il n'est pas lancé ça m'envoit bouler (il faut gerer l'erreur EOleSysError), sinon il fait le job.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    MSExcel = Variant::GetActiveObject("Excel.Application");
     
    // le job
    MSExcel.OlePropertySet("Visible", true);
     
    MSExcel.OlePropertyGet("Workbooks").OleProcedure("Add");
    MSExcel.OlePropertyGet("WorkSheets","Feuil2").OleProcedure("Select");
    MSExcel.OlePropertyGet("Range", "A1").OleProcedure("Select");
    wsprintf(buffer," Hello !");
    MSExcel.OlePropertyGet("ActiveCell").OlePropertySet("Value", buffer);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] sécurité d'accès à une application multi-tiers Java EE
    Par zerzy1982 dans le forum Java EE
    Réponses: 43
    Dernier message: 12/10/2007, 21h20
  2. [VBA-E] Activer une application ouverte
    Par Scritch852 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/05/2007, 15h45
  3. Réponses: 1
    Dernier message: 29/12/2006, 10h42
  4. Réponses: 15
    Dernier message: 15/05/2006, 09h26
  5. Réponses: 10
    Dernier message: 15/05/2006, 07h51

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