Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1615 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Retrouver les DispID pour ActiveX

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Retrouver les DispID pour ActiveX

n°1087430
nawash
MAOU
Posté le 18-05-2005 à 08:59:20  profilanswer
 

Bonjour à tous, j'ai un petit problème avec des ActiveX.  
 
Y a t'il un moyen de récuperer les DispID (Dispatch ID) en ne connaissant que la  CLSID de notre objet? La fonction GetIDsofNames ne me permet pas de le faire, je vous montre un exemple :  
 
En VB (qui va lire les DispID à la compilation) tout se passe tres vite  
 
App = CreateObject("Logiciel.Application" )
App.Open("c:\...." )
TS = App.Test
TS.Open("c:\..." )
 
J'ai un objet App qui possèdent des fonctions membres, ainsi qu'un sous-objet (ou une propriété?) qui contient aussi des fonctions membres. tout s'execute sans probleme.  
 
En VC++ je n'arrive pas a otenir le meme resultat
 
LPOLESTR Open_name = L"Open";
 
status = CA_CreateObjectByProgId ("Logiciel.Application", NULL, &handle);
status = CA_GetDispatchFromObjHandle (handle, &pointer);
           
/* Ouverture d'un fichier test */
pointer->lpVtbl->GetIDsOfNames (pointer, &IID_NULL, &Open_name, 1, 0, ID_array);
status = CA_MethodInvoke (handle, NULL, ID_array[0], CAVT_EMPTY, NULL, 1,&typestring, "C:\..." );  
 
Tout se passe bien en ce qui concerne les fonctions membre de l'objet (un DispID est renvoyé pour la fonction Open) crée par Logiciel.Application mais pas pour les fonctions de la propriété Test (VB -> App.Test). J'ai essayé toutes les combinaisons possibles comme Open_name2 = L"Test.Open" , "test->Open", "Test::Open" etc mais impossible de recuperer un DispID.  
 
En cherchant sur le net, j'ai vu plusieurs voies comme par exemple le fait qu'il faut creer un sous-objet pointant sur la propriété Test, ou alors ca parle d'interface IID specifique etc. Le problème c'est que je n'ai aucun renseignement concernant les IID (ont-il bien été enregistrés pendant l'installation du programme Logiciel?), je n'ai juste que le nom Logiciel.Application et sa CLSID, je n'ai pas non plus d'interface graphique type ocx, etc. Avoir les dispid de toutes les fonctions me permettait-il d'avoir acces à toutes les fonctions? Faudra-t-il que je créer quand meme un sous-objet? Comemnt faire?
 
Quelqu'un peut m'aider??? J'en peux plus ..................................  
 
 
 
       

mood
Publicité
Posté le 18-05-2005 à 08:59:20  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Retrouver les DispID pour ActiveX

 

Sujets relatifs
[activeX] récupérer les attributs height/width de <object> ?Créer un controle activeX
[Activex] - Passage de paramètre (Tableau)Retrouver un algorithme de cryptage...
cherche ActiveX qui affiche frame X d'une video Y[Visual C++] composant activeX executable
Composant ActiveX signé non reconnu comme tell'activeX de Window Media player vc++
Retrouver les paramètre d'un getURL[activeX] Comment récupérer la propriété width d'un usercontrol ?
Plus de sujets relatifs à : Retrouver les DispID pour ActiveX


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR