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++ Discussion :

Utilisation simple d'un objet COM


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut Utilisation simple d'un objet COM dans une DLL
    Bonjour à tous

    Je suis un hyper débutant en C.
    Je sais que je ne commence pas par le plus simple, mais j'ai extremement besoin d'un code pour pouvoir me connecter à un emulateur IBM et lui envoyer 4/5 fonctions par l'AUTOMATION qui suffisent à le piloter entierement.

    Avec VB6 c'est tres simple, mais j'ai l'impression qu'avec C++, ce n'est pas le pied.
    J'ai cherché une journée, et n'est rien trouvé de bon, ou bien que j'ai pu utiliser.

    Si quelqu'un avait la gentillesse de me donner un petit coup de main à traduire ce genre de fonction VB en C++, je lui en serait reconnaissant moi, et trois générations de mes enfants derriere moi

    Ou bien, si un de vous connait un lien ou a des connaissances sur ce sujet, j'ai besoin de ces 4 fonctions.
    C'est EXTREMEMENT important pour moi, c'est la piece maitresse de toutes mes applications.

    1/ Position curseur
    2/ Lecture de tel caractere à tel caractere
    3/ Ecriture de tel caractere
    4/ Envois de telle touche de fonction

    J'arrive pas à trouver.......j'suis désespéré
    Voila ce que je cherche à faire en C

    Connection et création de l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set System = CreateObject("EXTRA.System")   ' Gets the system object
    Set System = GetObject(, "EXTRA.System")  ' Gets the system object
    Set SessionTGC = System.ActiveSession
    Positionnement sur le ligne 7 et la colonne 40
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SessionTGC.Screen.row = 7
    SessionTGC.Screen.Col = 40
    Envois d'une touche systeme (Enter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SessionTGC.Screen.SendKeys (CodePerso)
    Récupération de l'etat de l'emulateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Do      ' Boucle d'attente
     Loop Until SessionTGC.Screen.OIA.Xstatus = 0
    Lecture d'une portion de l'ecran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If SessionTGC.Screen.Area(17, 37, 17, 68, , 1) = "Veuillez Confirmer votre DEMANDE" Then
    Je vous remercie beaucoup de votre aide
    Et vous souhaite une excelente journée

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    En C++ sans bibliothèque supplémentaire (comme MFC ou ATL), c'est assez difficile. À moins que tu n'utilises un Visual Studio récent, auquel cas tu peux profiter du Compiler COM Support, qui te permettra d'utiliser la bibliothèque COM en question juste en ayant sa Bibliothèque de types (typelib) à portée de main.

    Donc déjà:
    Quel environnement utilises-tu?
    Qu'est-ce qui est fourni avec l'émulateur IBM ? (fichiers d'en-tête ? DLL ? TypeLib ?)
    Regarde aussi dans la base de registre ou dans OLEVIEW.EXE, pour trouver les informations relatives EXTRA.System, notamment le nom de sa TypeLib s'il en a une...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Donc déjà:
    Quel environnement utilises-tu?
    J'utilise Visual studio 6.

    Citation Envoyé par Médinoc Voir le message
    Qu'est-ce qui est fourni avec l'émulateur IBM ? (fichiers d'en-tête ? DLL ? TypeLib ?)
    Y'a une palanquée de fichier dont voici la liste en piece jointe

    Citation Envoyé par Médinoc Voir le message
    Regarde aussi dans la base de registre ou dans OLEVIEW.EXE, pour trouver les informations relatives EXTRA.System, notamment le nom de sa TypeLib s'il en a une...
    Oula la !!! encore un panneau de windows que je ne connaissait pas
    Décidément il finira jamais de m'ébourrifer ce windows.
    J'ai fait OLEVIEW.EXE dans executer, et je suis tombé sur ce panneau style une BDR avec arborescence monstrueuse

    Je vais tenter de chercher ce qui parle d'EXTRA, mais y'a apparement pas de recherche comme dans la BDR, donc j'suis pas à la veille de manger de l'oie

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    J'ignore si ça vient de mon FF ou quoi ou qu'est-ce, mais je n'arrive pas à télécharger le fichier.

    Pour OLEVIEW, à ma connaissance ce n'est pas un composant de Windows mais de Visual. Tu n'auras pas à chercher dans les textes, seulement dans l'arborescence "All objects", qui est triée alphabétiquement.

    Par contre, pour ta version de Visual, je ne sais plus si elle supporte le Compiler COM Support, donc s'il n'y a pas de fichier d'en-tête, il va falloir le régénérer avec OLEVIEW et MIDL.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    J'ignore si ça vient de mon FF ou quoi ou qu'est-ce, mais je n'arrive pas à télécharger le fichier.
    Bah chez moi ça marche nickel
    J'avais vérifié avant et j'ai revérifié et ça marche.
    Bon je l'ai mis ailleurs, dis moi si c'est mieux ?

    http://purebasic.myftp.org/?filename...oire_EXTRA.zip

    Citation Envoyé par Médinoc Voir le message
    Pour OLEVIEW, à ma connaissance ce n'est pas un composant de Windows mais de Visual. Tu n'auras pas à chercher dans les textes, seulement dans l'arborescence "All objects", qui est triée alphabétiquement.
    Ah d'accord, je comprend mieux pourquoi personne n'en parlait avant
    Bon je vais regarder dans "All objects" ...

    Citation Envoyé par Médinoc Voir le message
    Par contre, pour ta version de Visual, je ne sais plus si elle supporte le Compiler COM Support, donc s'il n'y a pas de fichier d'en-tête, il va falloir le régénérer avec OLEVIEW et MIDL.
    J'ai compris, l'enfant se presente par le siege
    J'ai l'impression que je suis en train de te demander un truc impossible à faire
    J'suis dégouté, mon premier but etait juste de creer une DLL standard avec les fonctions dont je t'ai parlé au début dedans.

    Alors je me suis dit :
    -Y'a qu'a voir du coté de VC++ puisqu'il sait faire kes "vraies" DLL, mais j'etais à 100 lieues de penser que ce benet de crosoft, avait pas mis les fonctions OLE dans le VC++

    Il le fait expres ou quoi, alors il fait un language qui ne fait pas les DLL comme les autres, et dans l'autre language, il n'insere pas ce que sait faire le premier

    C'est quand meme pas la mer à boire une DLL avec l'AUTOMATION dedans...

    D'ailleurs quand je fais "news project", j'ai le choix "ATL COM appwizard"



    et aussi Quand je fais le choix "MFC appwizard" au 3/4e panneau y'a une case à cocher "AUTOMATION"; ça ne peux pas m'aider ça ?????


  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Ouuuii !!! t'es le meilleur
    J'ai trouvé ce que tu m'a demandé , enfin j'espere

    Dis moi c'que t'en pense

    http://purebasic.myftp.org/?filename...13/OleView.zip

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour la méthode avec MFC, je traduirais tes codes VB par ceci:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    _System spSystem;
    spSystem.CreateDispatch(_T("EXTRA.System"));
    _Session spSessionTGC(spSystem.GetActiveSession()); //NOTE: C'est la syntaxe d'initialisation C++
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Screen spScreen(spSessionTGC.GetScreen());
    spScreen.SetRow(7);
    spScreen.SetCol(40);
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    spScreen.SendKeys( code perso );
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OIA spOIA(spScreen.GetOia());
    do
    {
    }
    while(spOIA.GetXStatus() != 0);
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Area spArea(spScreen.Area(17, 37, 17, 68, COleVariant(DISP_E_PARAMNOTFOUND, VT_ERROR), COleVariant(1)));
    CString strArea = spArea.GetValue();
    if(strArea == _T("Veuillez Confirmer votre DEMANDE")
    {
        ...
    }
    Pour la méthode avec les tli, il me semble que c'est carrément plus simple.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Pour ton erreur avec TLI, je pense que tu t'es gouré dans ton projet et que tu as fait Win32 application au lieu de Win32 dynamic-link library.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Si tu n'existait pas il faudrait t'inventer 8 -)

    Je vais essayer ton code, hop hop, j'y vais .....

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Par défaut
    Snif j'ai trois erreur, et je ne vais pas t'etonner en te disant que je ne sais pas les corriger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    --------------------Configuration: AppelDll - Win32 Debug--------------------
    Compiling...
    AppelDll.cpp
    c:\appeldll\appeldll.cpp(3) : error C2146: syntax error : missing ';' before identifier 'spSystem'
    c:\appeldll\appeldll.cpp(3) : error C2501: '_System' : missing storage-class or type specifiers
    c:\appeldll\appeldll.cpp(3) : fatal error C1004: unexpected end of file found
    Error executing cl.exe.
     
    AppelDll.exe - 3 error(s), 0 warning(s)
    Je sais j'abuse, ...si tu pouvais me donner la ligne pour fermer la session ....

  11. #11
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ce code doit être mis dans une fonction de ta DLL MFC Regular, pas n'importe où et surtout pas en dehors de toute fonction...
    Et il est seulement prévu pour la version MFC. Si tu veux utiliser TLI, le code sera différent.

    PS: Tu n'as pas donné la ligne en VB pour fermer la session, donc je ne peux pas te donner la ligne en C++ + MFC...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/04/2009, 17h56
  2. Utilisation des objets COM
    Par jdelges dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 26/01/2007, 23h52
  3. Peut on utiliser un objet com avec eclipse
    Par MoiAussi dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/09/2006, 15h47
  4. [COM] Comment utiliser l'objet COM ?
    Par splinternabs dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 14/04/2006, 11h58
  5. [COM] Utilisation d'un objet COM
    Par Sophy75 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 03/04/2006, 18h43

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