Createobject

cs_epasquier Messages postés 9 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 2 septembre 2008 - 9 oct. 2007 à 14:26
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008 - 11 oct. 2007 à 23:51
Pourquoi les lignes suivantes marchent :
Dim mapSess As Object
Set mapSess = CreateObject("MSMAPI.MAPISession")

et pas celles-ci (Erreur 13 : types incompatibles à l'exécution du set)
Dim mapSess As MSMAPI.MAPISession
Set mapSess = CreateObject("MSMAPI.MAPISession")

Alors que cela marche avec Word:
Dim WordApp As Word.Application
Set WordApp = CreateObject("Word.Application")

8 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 oct. 2007 à 14:46
BONJOUR,



Question: Avec quelle DLL ou OCX peux t'on utiliser le type d'objet MAPISession? (cela aiderait pour t'aider efficacement)

NOTE: Téhoriquement si tu utilise le Type D'objet, il est inutile de passer par un CreateObject tu pourrais très bien faire

Dim mapSess As NEW MSMAPI.MAPISession

MERCI,
@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
9 oct. 2007 à 15:04
Re,
Bon tu peux ignorer mon précédent message, il n'apporte rien étant donnée que MAPISession ne semble pas être instanciable par un NEW

En revanche ce que je disais est correct pour Word

Dim WordApp As NEW Word.Application
 Foctionne parfaitement

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_epasquier Messages postés 9 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 2 septembre 2008
9 oct. 2007 à 15:23
Bonjour,
Merci de votre réponse.

J'ai fait CreateObject parce que le New ne fonctionne pas.

Pour la question, "Avec quelle DLL ou OCX peux t'on utiliser le type d'objet", je ne sais pas.
Je me suis "amusé" à essayer directement en créant les objets MAPI pour les encapsuler dans une classe, plutôt que de placer des contrôle MAPI32.OCX sur une feuille.
Je ne sais pas si s'est autorisé ou quelles sont les limitations.

Dans mon cas, le code fonctionne pareil qu'avec les contrôles sur une feuille.
Par contre, avec la déclaration "Object", j'ai perdu la vérification du code à la compilation ...

Donc je ne sais toujours pas pourquoi mon CreateOnject typé ne fonctionne pas.

Eric
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
10 oct. 2007 à 10:49
Bonjour,

Quelle est la différence entre :
Dim mapSess As Object
Set massess = CreateObject("MSMAPI.MAPISession")

et :
Dim mapSess As New MSMAPI.MAPISession

Le premier code est avantageux car :
- plus générique et fonctionnera avec toutes les versions de MAPI ( 8, 10, 11, ... )
- est dynamique ( late binding ) et ne dépend pas d'une version particulière de MAPI

Par contre on perd l'intellisens ( les noms des methodes n'apparaissent plus dans l'IDE )

Le second code est un peu plus rapide ( early binding ) mais dépendant d'une version particulière de MAPI ( 8, 10, 11, ... )

Voilou!

Gérôme GUILLEMIN
Auteur du langage FBSL
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_epasquier Messages postés 9 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 2 septembre 2008
10 oct. 2007 à 11:33
Bonjour Gérome,

Oui, mais
    Dim mapSess As New MSMAPI.MAPISession
ne fonctionne pas (VB6), ce qui était ma question initiale.

Mais je viens de tomber aussi sur une autre problème :
    Dim mapSess As Object
    Set mapSess = CreateObject("MSMAPI.MAPISession")
ne fonctionne pas (ActiveX ne peut créer l'objet) sur une machine "utilisateur" (VB pas installé, msmapi32.ocx installé par mes soins).

Je suis revenu à la version initiale, qui est de placer les 2 controles Session et Message sur ma feuille principale, et là ça fonctionne, mais je ne sais pas pourquoi.

Eric.
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
10 oct. 2007 à 14:35
Ouais, ben ça ne m'étonne pas :)
Installes les 2 OCX dans Windows\system32 et fais leur jouer un coup de REGSRV32.EXE sur chacun d'entre eux, ça devrait deja les declarer au niveau système, apres quoi il n'y a pas de raison que cela ne fonctionne pas :)
Si ça decon,ne toujours, ouvres ton VBP et changes les chemin de tes OCX, qui ont peut etre par malheur pris comme nom de chemin celui de ton EXE et pas celui du system32 dans lequel ils devraient figurer !

Gérôme GUILLEMIN
Auteur du langage FBSL
0
cs_epasquier Messages postés 9 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 2 septembre 2008
10 oct. 2007 à 17:02
Re bonjour Gérome,

C'est un seul fichier, MSMAPI32.OCX que j'ai bien sûr enregistré.
Lorsque je place les 2 contrôles sur une feuille, ça marche, mais pas avec CreateObject.
Mystère.
Idem pour le New.

Eric.

P.S.: je viens de cliquer sur ton lien FBSL et j'ai été "bleufé" : très impressionnant.
Et j'apprécie un plus: l'EDI est développé avec le même language !
J'ai des bons souvenirs avec le compilateur ADA développé en ... ADA, alors que microsoft ne sort aucun outils en .NET.
Bravo !

P.S(2): je peux convertir mes projets VB6 et avoir le look-and-feel XP/Vista ?
0
GEDDi Messages postés 206 Date d'inscription lundi 22 novembre 1999 Statut Membre Dernière intervention 3 juillet 2008
11 oct. 2007 à 23:51
Bonsoir :)

Merci :)
Et encore tu n'as pas vu le RAD 100% développé en FBSL !
Voir ici : http://gedd123.free.fr/Fbsl/FSF_830.png
Et il est rapide, le temps de réponse du RAD équivant à celui de VB6 :)

Tu peux convertir tes projets VB6 avec sans soucis, et quand tu compiles en EXE tu auras le style XP car le manifest est compris dans l'EXE sous forme de ressource, il suffit de regarder les exemples GUI qui sont fournis avec :)

Gérôme GUILLEMIN
Auteur du langage FBSL
0
Rejoignez-nous