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

  FORUM HardWare.fr
  Programmation

  [VB6] Composants COM et compatibilité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] Composants COM et compatibilité

n°18702
Hepil
Posté le 15-03-2001 à 09:53:01  profilanswer
 

Teste à faire :
 
développer une appli qui utilise le Composant COM Word 2000 ( word 9 ) et la faire tourner sur un PC ou il y a Word 97 ( word 8 )
Résultat ? Compatibilité ?
 
Si résultat négatif,  
Peut-on mettre les deux ocx ( composants COM ) sur un même PC ?
Qui pourrait tester cela en // avec moi ?
 
Qui est intéresé ?
 
 
Allo ????
 
 
C'est un problème que toutes les entreprise utilisant un Composant COM d'Office XX vont découvrir à la première màj de leurs applications développées !!!
 
 
@+

mood
Publicité
Posté le 15-03-2001 à 09:53:01  profilanswer
 

n°18733
seblamb
Posté le 15-03-2001 à 12:31:38  profilanswer
 

Tous le composants COM ont un numéro unique,  
donc les composants COM Word 9 et COM Word 8 sont donc différenciés. Il peuvent être présent tous les deux sur la même machine.
Et bien sur un programme devellopé pour le composant COM Word 9 ne pourra pas marcher sur une machine Word97.

n°18734
Hepil
Posté le 15-03-2001 à 12:35:16  profilanswer
 

Est-ce qu'il faudra recompiler l'application après avoir changer la référence vers l'OCX considérée ?
Y a t-il une possibilité de détection automatique de l'applicaation ?

n°18740
seblamb
Posté le 15-03-2001 à 13:10:11  profilanswer
 

Enfin c'est un peut plus compliqué, les types d'objects COM qui sont différenciés.  
L'OCX qui les supporte importe peut.
En général quand on passe d'une version à l'autre d'un l'OCX,
on conserve les anciens type COM et on rajoute des nouveaux.
Un bon example est DirectX qui conserve les ancien types COM  
et rajoute des nouveaux pour les nouvelle fonctions des carte graphiques.
Donc il faut que tu regardes si les type com que tu utilises  
existaitent déja dans les versions précédentes  
( c'est normalement écrit dans la doc)
Si c'est le cas tu n'as besoin de rien faire. Ca marchera quelque soit la version de word installée.  
Comme les jeux qui utilisent DirectX6 alors que DirectX7 est installé sur ta machine
Sinon il faut réécrire ton code pour ne pas les utiliser.

n°18746
Hepil
Posté le 15-03-2001 à 13:17:30  profilanswer
 

Si je comprends bien, les composants COM de Word sont dans un OCX.
 
L'ocx de Word 2000 aurait le même nom que celui de word 97, donc l'appli utiliserait la même référence d'ocx => pas de modif!
 
Les composants COM de Word97 sont inclus dans l'OCX de Word 2000
Tout est alors automatique ?

n°18753
seblamb
Posté le 15-03-2001 à 13:26:40  profilanswer
 

Non tu n'as pas tout compris  :(  
Le nom de l'ocx n'a occune importance, c'est pas une dll.
Ce qui compte c'est ce qu'il y a l'interieur.
Pour ça il faut que tu regarde la doc et les type COM que tu utilise.

n°18756
Hepil
Posté le 15-03-2001 à 13:31:58  profilanswer
 

effectivement, dans VB il n'y a pas de composants (ocx) pour word 9
Je ne trouve qu'une référence à MSWORD9.OLB
Est-ce cela qui est le Type du composant COM ?

n°18758
seblamb
Posté le 15-03-2001 à 13:40:37  profilanswer
 

Tous le OCX ne sont pas des ".ocx"  
Il peut très bien s'appeler "toto.nnn".
Le nom du fichier ne donne aucune indication sur le type de l'objet COM.  
D'ailleur en général un OCX contient plusieurs objets COM.
C'est quand tu importe un OCX dans VB que tu dois voir les types de objets COM qui sont contenus dedans.  
Je ne peux pas te dire où, j'utilise plus VB depuis un certain temps.

n°18759
Hepil
Posté le 15-03-2001 à 13:52:05  profilanswer
 

ca reste flou pour moi :
lors de la compilation, qu'est-ce qui est enregistré ?
la référence ? l'objet ?, le type ? le composant ?
 
Qu'est ce qui peut alors changer quand on passe de Word 97 à word 2000 ?
ça doit forcément être un élément non compilé dans l'application et qui ne change pas de nom, non ?
sinon, ça veut dire que l'appli fait référence au contenu d'un fichier qui lui, est mis à jour en passant de word97 à word 2000? Alors là, effectivement le nom du fichier ( de l'ocx ou de la dll ... ) importe peu. Ce serait le nom du composant COM qui différerait ...
 
je nage toujours un peu plus, et en plus je dois t'embêter ..
désolé

n°18762
seblamb
Posté le 15-03-2001 à 14:03:58  profilanswer
 

En fait chaque type COM à un numéro unique (CLSID) qui est affecté lors de la creation de ce type.
Quand l'ocx est installé sur une machine il référence tous les type qu'il contien dans la base de registre.
Donc dans la base de registre  : CLSID -> nom du fichier qui contient ce type.
Quand un programme veut un utiliser objet du type {784CFA20-2291-11D4-B6EA-00104BFF3BB8} par ex,  il regarde dans la BDR quel fichier peut lui fournir cet objet.
Il charge cet OCX et lui demande un objet du type {784CFA20-2291-11D4-B6EA-00104BFF3BB8}. Le fichier crée l'objet et renvois un pointeur (référence) sur cet objet.
En VB tout ceci est caché au programmeur.

mood
Publicité
Posté le 15-03-2001 à 14:03:58  profilanswer
 

n°18763
seblamb
Posté le 15-03-2001 à 14:04:00  profilanswer
 

En fait chaque type COM à un numéro unique (CLSID) qui est affecté lors de la creation de ce type.
Quand l'ocx est installé sur une machine il référence tous les type qu'il contien dans la base de registre.
Donc dans la base de registre  : CLSID -> nom du fichier qui contient ce type.
Quand un programme veut un utiliser objet du type {784CFA20-2291-11D4-B6EA-00104BFF3BB8} par ex,  il regarde dans la BDR quel fichier peut lui fournir cet objet.
Il charge cet OCX et lui demande un objet du type {784CFA20-2291-11D4-B6EA-00104BFF3BB8}. Le fichier crée l'objet et renvois un pointeur (référence) sur cet objet.
En VB tout ceci est caché au programmeur.

n°18767
Hepil
Posté le 15-03-2001 à 14:12:57  profilanswer
 

Génial, j'ai compris
donc c'est le même type d'objet qui doit se retrouver dans le fichier de word2000 et dans celui de word 97
La BDR sert de lien entre le type d'objet et le fichier
 
MAIS alors :
Dans mon cas réel, je développe en VB6 avec office 2000 ( Word 9 ) une application pour les utilisateurs qui auront office 97 ( word 8 )
Si mon type d'objet exite sous les deux versions d'office, je 'pose mon application' chez l'utilisateur et ça marche, OK ?
Si le type est différent, il ne sera pas trouvé dans la BDR, c'est bien cela ?
me sufirait-il d'installer le fichier d'office 2000 dans lequel il y a ce type d'objet COM que mon appli utilise ?
il y aurait alors le fichier de word 97 et le ficheir de word2000 sur le PC des utilisateurs!  
aucunue incompatibilité logique, sauf peut-être pour les type d'objets communs aux deux fichiers !!!
Qu'en penses-tu ?

n°18775
seblamb
Posté le 15-03-2001 à 14:24:30  profilanswer
 

Oui, :bounce:  je pense que tu as compris, mais quelques remarques :
 
Si deux OCX enregistrent le même type d'objet c'est l'ocx le enregistré le dernier qui à raison   :)  
 
Pour installer un ocx autoinstallable il faut faire :  
 regsrv32 nom_de_fichier_ocx
si ça marche pas il y a que le créateur d'ocx qui peut le faire
 
Un autre problème c'est qu'en général les fichier ocx font appel à d'autres fichier ocx ou à des dll.  
Je pense que l'installation complète de Word est nécessaire.
A vérifier bien sur

n°18780
Hepil
Posté le 15-03-2001 à 14:31:22  profilanswer
 

ok, merci
je pense que pour Word2000 il n'y a qu'un seul fichier, MSWORD9.olb dans lequel il y a tous les types d'objets
je te tiendrais au courant
 
sinon, tu as des "bagages" techniques qui me font défaut, ce que tu auras deviné. Y a-t il un ouvrage ou un site où je pourrais apprendre ce genre d'informations très techniques, ou penses-tu que j'ai tout appris avec toi ? :hap:  
Tu es ingénieur ? ou tu as énormément d'expérience ?

n°18785
seblamb
Posté le 15-03-2001 à 14:40:57  profilanswer
 

Je connais pas tout, donc toi non plus ;) , sinon je pense que tu as maintenant le minimun pour utiliser les OCX en VB.
Maintenant si tu veut en créer c'est autre chose...
Je suis pas Ingenieur ( j'ai déja eu eu du mal avec mon BTS ...)  
J'ai 10 ans de prog C++, dont 3 en entreprise et 1 an sur les ActiveX.
J'ai pris la doc de microsoft ( Microsoft develloper network) et sur www.msdn.microsoft.com
et surtout utilisé les examples.  
En fait j'ai commencer à modifier les examples pour comprendre et j'ai approfondis avec la doc.

n°18786
seblamb
Posté le 15-03-2001 à 14:41:01  profilanswer
 

Je connais pas tout, donc toi non plus ;) , sinon je pense que tu as maintenant le minimun pour utiliser les OCX en VB.
Maintenant si tu veut en créer c'est autre chose...
Je suis pas Ingenieur ( j'ai déja eu eu du mal avec mon BTS ...)  
J'ai 10 ans de prog C++, dont 3 en entreprise et 1 an sur les ActiveX.
J'ai pris la doc de microsoft ( Microsoft develloper network) et sur www.msdn.microsoft.com
et surtout utilisé les examples.  
En fait j'ai commencer à modifier les examples pour comprendre et j'ai approfondis avec la doc.

n°18790
Hepil
Posté le 15-03-2001 à 14:44:29  profilanswer
 

ahh la culture ...
 
 
oui, ok et merci encore
j'espère te revoir de temps à autre sur le forum
je vais aussi potasser le site de MS
 
@+ :hello:

n°18844
Hepil
Posté le 16-03-2001 à 09:18:16  profilanswer
 

Si tu es toujours là :
hypothèses:
-je programme sous VB6 et Office 2000
-je vais utiliser le COM de Word9 (2000) pour les impressions
(il faut impérativement que les type d'objets soit "compatibles" ou inclus dans le fichier de Word97)
- je créé mon document type sous Word en l'enregistrant sous le format Word97 !!
 
question :
vais-je automatiquement n'utiliser que les types d'objets de word97 ? et être ainsi compatible d'office avec Word97 et Word 2000?


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

  [VB6] Composants COM et compatibilité

 

Sujets relatifs
[VB6] passage en C ? Pourquoi ?[HTML/Javascript] Compatibilité Netscape 4.0
[VB6] Les composants COM[VB6] Quel format de tableau choisir ?!?
VB6 : ca morche po ...[VB6 + ORACLE]
VB6 : empecher de redimensionner une fenetre ...Routines VB6 pour gerer un serveur Half-Life
Plus de sujets relatifs à : [VB6] Composants COM et compatibilité


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