Bonjour =E0 tous,
J'envoe actuellement des message depuis une appli VB en=20
m'appuyant sur l'objet outlook.
Lorsque j'ex=E9cute pas =E0 pas le code tout se passe=20
correctement lorssque je l'ex=E9cute normalement il garde=20
outlook en m=E9moire et =E7a me fait planter l'appli.
J'ai bien mis apr=E8s le send=20
Set NewMail =3D Nothing
OutlookApp.Quit
Set OutlookApp =3D Nothing
mais il semblerait que =E7a ne suffise pas.
Merci de votre aide.
Beno=EEt
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Sundowne
"Benoît" a écrit dans le message de news:089a01c371f0$21e6f620$ <Bonjour à tous, <J'envoe actuellement des message depuis une appli VB en <m'appuyant sur l'objet outlook. <il garde outlook en mémoire et ça me fait planter l'appli. <J'ai bien mis après le send <Set NewMail = Nothing <OutlookApp.Quit <Set OutlookApp = Nothing
'Jour Il semble que tu subisses les effets d'un grand classique de COM, le pb des objets persistants, aussi appelé (?) instances cachés. Pour l'éviter, tu dois TOUJOURS qualifier les fonctions et les "sous objets" de l'objet que tu utilises faute de quoi tu crées une instance cachée. Je m'expique : Tu crées objet COM (ce qui est le cas outlook), appelons le A. Tu crées une 1ére instance de outlook. Tu utilises des fonctions directement accessible de la DLL COM de l'objet , par exp Unefonction. Si tu fais c = Unefonction, tu crées une 2 éme instance de outlook, une instance cachées B. Quand tu mets à nothing l'objet A , cela n'a aucun effet sur l'objet B qui reste en mémoire d'où tes pb. Pour ne pas avoir ce pb , tu dois faire c= A.Unefonction, c'est à dire instancier la fonction. Tu as le même effet si tu crées un "sous objet" de la DLL COM. Là encore tu dois l'instancier.
Bien entendu, tu dois aussi fermer et mettre à nothing tous les objets créés car tant que l'un de ces objets persistent la DLL qui le gére est bien entendu active. Il te faut donc réviser tout ton code et instancier toutes les fonctions de outlook utilisées, et vérifier que tous les objets, même déclaré en local (!!) sont bien instancié, fermé et mis à nothing aprés usage. Ces régles DOIVENT TOUJOURS être utilisées sous COM.
@+
"Benoît" <Benoit.laroche@free.fr> a écrit dans le message de
news:089a01c371f0$21e6f620$a301280a@phx.gbl...
<Bonjour à tous,
<J'envoe actuellement des message depuis une appli VB en
<m'appuyant sur l'objet outlook.
<il garde outlook en mémoire et ça me fait planter l'appli.
<J'ai bien mis après le send
<Set NewMail = Nothing
<OutlookApp.Quit
<Set OutlookApp = Nothing
'Jour
Il semble que tu subisses les effets d'un grand classique de COM, le pb
des objets persistants, aussi appelé (?) instances cachés. Pour l'éviter, tu
dois TOUJOURS qualifier les fonctions et les "sous objets" de l'objet que tu
utilises faute de quoi tu crées une instance cachée.
Je m'expique : Tu crées objet COM (ce qui est le cas outlook), appelons
le A. Tu crées une 1ére instance de outlook.
Tu utilises des fonctions directement accessible de la DLL COM de
l'objet , par exp Unefonction.
Si tu fais c = Unefonction, tu crées une 2 éme instance de outlook, une
instance cachées B.
Quand tu mets à nothing l'objet A , cela n'a aucun effet sur l'objet B
qui reste en mémoire d'où tes pb.
Pour ne pas avoir ce pb , tu dois faire c= A.Unefonction, c'est à dire
instancier la fonction.
Tu as le même effet si tu crées un "sous objet" de la DLL COM. Là encore
tu dois l'instancier.
Bien entendu, tu dois aussi fermer et mettre à nothing tous les objets
créés car tant que l'un de ces objets persistent la DLL qui le gére est bien
entendu active.
Il te faut donc réviser tout ton code et instancier toutes les fonctions
de outlook utilisées, et vérifier que tous les objets, même déclaré en local
(!!) sont bien instancié, fermé et mis à nothing aprés usage.
Ces régles DOIVENT TOUJOURS être utilisées sous COM.
"Benoît" a écrit dans le message de news:089a01c371f0$21e6f620$ <Bonjour à tous, <J'envoe actuellement des message depuis une appli VB en <m'appuyant sur l'objet outlook. <il garde outlook en mémoire et ça me fait planter l'appli. <J'ai bien mis après le send <Set NewMail = Nothing <OutlookApp.Quit <Set OutlookApp = Nothing
'Jour Il semble que tu subisses les effets d'un grand classique de COM, le pb des objets persistants, aussi appelé (?) instances cachés. Pour l'éviter, tu dois TOUJOURS qualifier les fonctions et les "sous objets" de l'objet que tu utilises faute de quoi tu crées une instance cachée. Je m'expique : Tu crées objet COM (ce qui est le cas outlook), appelons le A. Tu crées une 1ére instance de outlook. Tu utilises des fonctions directement accessible de la DLL COM de l'objet , par exp Unefonction. Si tu fais c = Unefonction, tu crées une 2 éme instance de outlook, une instance cachées B. Quand tu mets à nothing l'objet A , cela n'a aucun effet sur l'objet B qui reste en mémoire d'où tes pb. Pour ne pas avoir ce pb , tu dois faire c= A.Unefonction, c'est à dire instancier la fonction. Tu as le même effet si tu crées un "sous objet" de la DLL COM. Là encore tu dois l'instancier.
Bien entendu, tu dois aussi fermer et mettre à nothing tous les objets créés car tant que l'un de ces objets persistent la DLL qui le gére est bien entendu active. Il te faut donc réviser tout ton code et instancier toutes les fonctions de outlook utilisées, et vérifier que tous les objets, même déclaré en local (!!) sont bien instancié, fermé et mis à nothing aprés usage. Ces régles DOIVENT TOUJOURS être utilisées sous COM.