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

MFC Discussion :

pb: com/Dcom


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut pb: com/Dcom
    J'utilise une bibliot�que qui permet d'envoyer des commande dans un autre programme.
    Avec Visual Basic j'ai pas de probl�me quand j'ajoute la library TLB (dans r�f�rences).

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    VISUAL BASIC:
     
    Dim GraphicsBuilder As IGraphicsBuilder
        Set GraphicsBuilder = New GraphicsBuilder.GraphicsBuilder
        With GraphicsBuilder
        .Visible = True
        .PageNew "include", "standard", "normal", 0, True, True
    End With
    Par contre pour faire la m�me chose en c++ c'est une autre histoire, �a marche pas... :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    En VISUAL C++ (6):
     
    #include <stdio.h>
    #include <windows.h>
    #include <comdef.h>
     
    #import "C:\Program Files\Citect\CitectSCADA\Bin\CTDRAW32.TLB"
    const IID IID_IRadio = {0x33A55B2B,0x55FC,0x4632,{0xBC,0xF0,0x4D,0xE3,0xC5,0x1F,0xD0,0x48}};
    const CLSID CLSID_Radio = {0x33A55B2B,0x55FC,0x4632,{0xBC,0xF0,0x4D,0xE3,0xC5,0x1F,0xD0,0x48}};
    int good(void)
    {
       HRESULT hr;
       GraphicsBuilder::IGraphicsBuilder* pRadio;
    //   IRadio* pRadio;
    //_bstr_t strStation("TEST");
     
       hr = CoCreateInstance(CLSID_Radio,      // CLSID du composant
             NULL,                     // --> Sert pour l'aggrégation !
             CLSCTX_ALL,                  // indique quoi rechercher (dll, exe, distant)
             IID_IRadio,                  // interface
             (void**)&pRadio);            // objet retourné
     
       if (FAILED(hr)) return -1;
     
       // Utilisation du composant ...
     
       pRadio->put_Visible(true);
       pRadio->PageNew("include", "standard", "normal",0,1,1);
     
       CoUninitialize();
       return 0;
    }
     
    int main(void)
    {
     
       printf("Ca va Marcher\n on y croit...\n");
       printf("\nresultat: %i\n",good());
       return 0;
     
    }
    �videment j'obtient comme r�sultat "-1"... bref je pense que �a vient des deux constantes du d�but, je suis pas sur de savoir les trouver correctement, j'utilise "OLE/COM object viewer" et je tombe sur un code du genre {33A55B2B-55FC-4632-BCF0-4DE3C51FD048} et ensuite j'adapte en mettant des "{}" et des"," . Comment on fait pour �tre s�r que c'est le bon? que c'est comme �a que l'on doit faire?
    merci d'avance

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Affiche le code d'erreur... Mais � priori, si tu as bien appel� CoUninitialize(), il manque un petit CoInitialize() quelque part.

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    j'ai fais
    et �a me renvoit �a:
    je ne sais pas si c'est �a que tu veux, sinon j'ai besoin de pr�cision.
    De plus je suis d'accord qu'il manque un CoUninitialize() mais je ne sais pas quel argument prend CoUninitialize() peux-tu m'�clairer?
    merci de ton aide.

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    J'ai dit qu'il manquait un appel � CoInitialize...
    D'ailleurs, prends ton code d'erreur, copie le. Dans le menu Outils de VC++, lance ErrLook. Colle le code d'erreur, et... tadaaaaa:
    CoInitialize n'a pas �t� appel�.

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    oui... lol d�sol�. j'ai du mal...
    j'ai rajout�
    et l� j'obtient �a au m�me printf:
    ce qui signifie
    ... je comprend pas trop
    en tout cas merci, je ne connaissait pas cette utilitaire, et merci pour ton aide

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    je remet le code que j'ai avec les modifs:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <stdio.h>
    #include <windows.h>
    #include <comdef.h>
     
    #import "C:\Program Files\Citect\CitectSCADA\Bin\CTDRAW32.TLB"
     
    const IID IID_IRadio = {0x58792D66,0x0C1E,0x4E72,{0x9F,0x6F,0xBE,0xEE,0xC4,0x83,0xB9,0xEF}};
    const CLSID CLSID_Radio = {0x58792D66,0x0C1E,0x4E72,{0x9F,0x6F,0xBE,0xEE,0xC4,0x83,0xB9,0xEF}};//{58792D66-0C1E-4E72-9F6F-BEEEC483B9EF};
     
    /*
    const IID IID_IRadio = {58792D66-0C1E-4E72-9F6F-BEEEC483B9EF};
    const CLSID CLSID_Radio = {58792D66-0C1E-4E72-9F6F-BEEEC483B9EF};//{58792D66-0C1E-4E72-9F6F-BEEEC483B9EF};
    */
    /*
    const IID IID_IRadio = {0x33A55B2B,0x55FC,0x4632,{0xBC,0xF0,0x4D,0xE3,0xC5,0x1F,0xD0,0x48}};
    const CLSID CLSID_Radio = {0x33A55B2B,0x55FC,0x4632,{0xBC,0xF0,0x4D,0xE3,0xC5,0x1F,0xD0,0x48}};
    */
    /*
    const IID IID_IRadio = {0xAA74361B,0x4C11,0x11D4,{0xAA,0x54,0x00,0x50,0xDA,0x68,0xAE,0x82}};
    const CLSID CLSID_Radio = {0xAA74361C,0x4C11,0x11D4,{0xAA,0x54,0x00,0x50,0xDA,0x68,0xAE,0x82}};
    */
    /*
    int test(void)
    {
     
     
    	GraphicsBuilder::IGraphicsBuilder *aaa;
     
     
    //	aaa = NULL;
    //	 ip = new int[100];
     
    //	aaa = new GraphicsBuilder::IGraphicsBuilder; 
     
    	aaa->put_Visible(true);
    	aaa->PageNew("include", "standard", "normal",0,1,1);
    //	aaa = GraphicsBuilder::IGraphicsBuilderPtr;
     
     
     
     
    return 0;
    }
    */
     
     
    int good(void)
    {
    	HRESULT hr;
    	GraphicsBuilder::IGraphicsBuilder* pRadio;
    //	IRadio* pRadio;
    	//_bstr_t strStation("TEST");
    //	 Guid("96749377-3391-11D2-9EE3-00C04F797396");
    CoInitialize( NULL  );
    	hr = CoCreateInstance(CLSID_Radio,		// CLSID du composant
    			NULL,							// --> Sert pour l'aggrégation !
    			CLSCTX_ALL,						// indique quoi rechercher (dll, exe, distant)
    			IID_IRadio,						// interface
    			(void**)&pRadio);				// objet retourné
     
    	///////CoInitialize() ;
     
    	printf("%i",hr);
    	if (FAILED(hr)) return -1;
     
    	// Utilisation du composant ...
     
    	pRadio->put_Visible(true);
    	pRadio->PageNew("include", "standard", "normal",0,1,1);
     
    	CoUninitialize();
    	return 0;
    }
     
    int main(void)
    {
     
    	printf("Ca va Marcher...\n on y croit...\n");
    	printf("\nresultat: %i\n",good());
    	//test();
    	return 0;
     
    }
    je comprend pas pourquoi il me dit "Classe non enregistr�e"...
    merci de votre aide � tous

  7. #7
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Ca veut dire que tu lui dit de chercher CLSID_Radio, et lui il te r�pond qu'il le trouve pas = qu'il est pas install� sur ton syst�me. Faut enregistrer le composant en question (dll...) via regsvr32.
    Mais dans ton code tu m�langes les genres. En utilisant #import, VC++ te g�n�re des classes qui te simplifient grandement le travail. Apprends � t'en servir.
    http://msdn2.microsoft.com/en-us/library/8etzzkb6(VS.80).aspx
    Des exemples:
    http://support.microsoft.com/kb/179706/EN-US/
    http://support.microsoft.com/default.aspx?scid=kb;en-us;169496
    et lis cette FAQ (le d�but au moins):
    http://www.developpez.com/windows/dcom

Discussions similaires

  1. COM/DCOM avec borland?
    Par SOPRA-Eherve dans le forum C++Builder
    R�ponses: 7
    Dernier message: 11/03/2007, 00h14
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    R�ponses: 1
    Dernier message: 16/11/2006, 15h28
  3. [.NET] Ambiguit� .NET-COM-DCOM-COM+
    Par zsoh dans le forum Framework .NET
    R�ponses: 7
    Dernier message: 11/09/2006, 16h44
  4. COM/DCOM
    Par cjacquel dans le forum MFC
    R�ponses: 2
    Dernier message: 18/01/2006, 16h08
  5. com/dcom/com+/activex
    Par luta dans le forum VB 6 et ant�rieur
    R�ponses: 9
    Dernier message: 30/04/2004, 14h00

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