Je débute en c - c++ et il y a maintenant quelques temps j'ai décider de
commencer a apprendre les api Win32 ainsi que les api des logiciel Windows.
Je commence a travailler les api de MSN et j'ai un peut de mal avec un
type de variables ( si cela en est une ^^)
Le but si j'ai bien comprit et de stocker les contacts msn dans une
variable ou tableau mais je ne comprend pas comment les afficher.
voici mon code:
#include <iostream>
#include <windows.h>
#import "C:\Program Files\Messenger\msmsgs.exe" tlbid(3), named_guids,
embedded_idl
using namespace MessengerAPI;
[ module(name="MessengerTest") ];
int main()
{
// Pointeur vers l'interface messenger
IMessenger *pIMessenger = NULL;
IMessengerContacts *pIMessengerContacts = NULL;
MSDN ne précise pas par quoi cela a était remplacer, pouvez vous m'indiquer ce que je dois utiliser?
Christian ASTOR
On 14 oct, 21:10, Jeremy Dartigalongue wrote:
> Il ne faut pas utiliser IMessenger, car elle n'est plus valable > (même sous XP avec les dernières versions de Messenger)
>http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx Effectivement je n'avait pas vus cela. MSDN ne précise pas par quoi cela a était remplacer, pouvez vous m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant.... Mais il faut toujours tester le retour des apis. Par exemple, il faut faire : HRESULT hr; hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts); if (SUCCEEDED(hr)) { // .... suite du code }
Pour les contacts, tu récupères le nombre et tu boucles : long nCount = 0; hr = pIMessengerContacts->get_Count(&nCount); IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID **)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName); // ... etc...
On 14 oct, 21:10, Jeremy Dartigalongue <cannabi...@orange.fr> wrote:
> Il ne faut pas utiliser IMessenger, car elle n'est plus valable
> (même sous XP avec les dernières versions de Messenger)
>http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx
Effectivement je n'avait pas vus cela.
MSDN ne précise pas par quoi cela a était remplacer, pouvez vous
m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant....
Mais il faut toujours tester le retour des apis.
Par exemple, il faut faire :
HRESULT hr;
hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts);
if (SUCCEEDED(hr))
{
// .... suite du code
}
Pour les contacts, tu récupères le nombre et tu boucles :
long nCount = 0;
hr = pIMessengerContacts->get_Count(&nCount);
IMessengerContact* pMessengerContact = NULL;
for (int i = 0; i < nCount; i++)
{
hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID
**)&pMessengerContact);
if(SUCCEEDED(hr))
{
BSTR bstrName;
pMessengerContact->get_FriendlyName(&bstrName);
// ... etc...
> Il ne faut pas utiliser IMessenger, car elle n'est plus valable > (même sous XP avec les dernières versions de Messenger)
>http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx Effectivement je n'avait pas vus cela. MSDN ne précise pas par quoi cela a était remplacer, pouvez vous m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant.... Mais il faut toujours tester le retour des apis. Par exemple, il faut faire : HRESULT hr; hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts); if (SUCCEEDED(hr)) { // .... suite du code }
Pour les contacts, tu récupères le nombre et tu boucles : long nCount = 0; hr = pIMessengerContacts->get_Count(&nCount); IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID **)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName); // ... etc...
Jeremy Dartigalongue
Christian ASTOR a écrit :
On 14 oct, 21:10, Jeremy Dartigalongue wrote:
Il ne faut pas utiliser IMessenger, car elle n'est plus valable (même sous XP avec les dernières versions de Messenger) http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx
Effectivement je n'avait pas vus cela. MSDN ne précise pas par quoi cela a était remplacer, pouvez vous m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant.... Mais il faut toujours tester le retour des apis. Par exemple, il faut faire : HRESULT hr; hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts); if (SUCCEEDED(hr)) { // .... suite du code }
Pour les contacts, tu récupères le nombre et tu boucles : long nCount = 0; hr = pIMessengerContacts->get_Count(&nCount); IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID **)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName); // ... etc...
On 14 oct, 21:10, Jeremy Dartigalongue <cannabi...@orange.fr> wrote:
Il ne faut pas utiliser IMessenger, car elle n'est plus valable
(même sous XP avec les dernières versions de Messenger)
http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx
Effectivement je n'avait pas vus cela.
MSDN ne précise pas par quoi cela a était remplacer, pouvez vous
m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant....
Mais il faut toujours tester le retour des apis.
Par exemple, il faut faire :
HRESULT hr;
hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts);
if (SUCCEEDED(hr))
{
// .... suite du code
}
Pour les contacts, tu récupères le nombre et tu boucles :
long nCount = 0;
hr = pIMessengerContacts->get_Count(&nCount);
IMessengerContact* pMessengerContact = NULL;
for (int i = 0; i < nCount; i++)
{
hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID
**)&pMessengerContact);
if(SUCCEEDED(hr))
{
BSTR bstrName;
pMessengerContact->get_FriendlyName(&bstrName);
// ... etc...
Il ne faut pas utiliser IMessenger, car elle n'est plus valable (même sous XP avec les dernières versions de Messenger) http://msdn.microsoft.com/en-us/library/ms631614(VS.85).aspx
Effectivement je n'avait pas vus cela. MSDN ne précise pas par quoi cela a était remplacer, pouvez vous m'indiquer ce que je dois utiliser?
Sur mon poste (XP SP2), ça marche pourtant.... Mais il faut toujours tester le retour des apis. Par exemple, il faut faire : HRESULT hr; hr = pIMessenger->get_MyContacts((IDispatch**)&pIMessengerContacts); if (SUCCEEDED(hr)) { // .... suite du code }
Pour les contacts, tu récupères le nombre et tu boucles : long nCount = 0; hr = pIMessengerContacts->get_Count(&nCount); IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID **)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName); // ... etc...
"cela ne marche pas" est vague. Il faut déjà tester "hr = CoCreateInstance..." (cela peut ramener REGDB_E_CLASSNOTREG) et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
On 15 oct, 13:43, Jeremy Dartigalongue <cannabi...@orange.fr> wrote:
"cela ne marche pas" est vague.
Il faut déjà tester "hr = CoCreateInstance..."
(cela peut ramener REGDB_E_CLASSNOTREG)
et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
"cela ne marche pas" est vague. Il faut déjà tester "hr = CoCreateInstance..." (cela peut ramener REGDB_E_CLASSNOTREG) et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
"cela ne marche pas" est vague. Il faut déjà tester "hr = CoCreateInstance..." (cela peut ramener REGDB_E_CLASSNOTREG) et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
je l'avait déja fait, j'ai déterminer que cela vien de cette partit
IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID**)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName);
"cela ne marche pas" est vague.
Il faut déjà tester "hr = CoCreateInstance..."
(cela peut ramener REGDB_E_CLASSNOTREG)
et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
je l'avait déja fait, j'ai déterminer que cela vien de cette partit
IMessengerContact* pMessengerContact = NULL;
for (int i = 0; i < nCount; i++)
{
hr =
pIMessengerContacts->QueryInterface(IID_IMessengerContact,
(VOID**)&pMessengerContact);
if(SUCCEEDED(hr))
{
BSTR bstrName;
pMessengerContact->get_FriendlyName(&bstrName);
"cela ne marche pas" est vague. Il faut déjà tester "hr = CoCreateInstance..." (cela peut ramener REGDB_E_CLASSNOTREG) et faire du pas-à-pas, surtout sur chaque "hr =..." pour évaluer hr
je l'avait déja fait, j'ai déterminer que cela vien de cette partit
IMessengerContact* pMessengerContact = NULL; for (int i = 0; i < nCount; i++) { hr = pIMessengerContacts->QueryInterface(IID_IMessengerContact, (VOID**)&pMessengerContact); if(SUCCEEDED(hr)) { BSTR bstrName; pMessengerContact->get_FriendlyName(&bstrName);
donc de QueryInterface mais je ne sais pas a quoi cela correspond et je ne sais pas pour quel raison cela ne marche pas.
Tu ne dis toujours pas à quoi est égal hr, car c'est ça qui donne l'explication..
Jeremy Dartigalongue
nico a écrit :
Jeremy Dartigalongue wrote:
donc de QueryInterface mais je ne sais pas a quoi cela correspond et je ne sais pas pour quel raison cela ne marche pas.
Tu ne dis toujours pas à quoi est égal hr, car c'est ça qui donne l'explication..
cela ma marque "erreur récupération ou écriture du nom" que j'ai indiquer dans le else donc cela viens bien de celui la ou il y a un problème. donc il renvoie pas SUCCEEDED
nico a écrit :
Jeremy Dartigalongue wrote:
donc de QueryInterface mais je ne sais pas a quoi cela correspond et
je ne sais pas pour quel raison cela ne marche pas.
Tu ne dis toujours pas à quoi est égal hr, car c'est ça qui donne
l'explication..
cela ma marque "erreur récupération ou écriture du nom" que j'ai
indiquer dans le else
donc cela viens bien de celui la ou il y a un problème. donc il renvoie
pas SUCCEEDED
donc de QueryInterface mais je ne sais pas a quoi cela correspond et je ne sais pas pour quel raison cela ne marche pas.
Tu ne dis toujours pas à quoi est égal hr, car c'est ça qui donne l'explication..
cela ma marque "erreur récupération ou écriture du nom" que j'ai indiquer dans le else donc cela viens bien de celui la ou il y a un problème. donc il renvoie pas SUCCEEDED
Christian ASTOR
On 16 oct, 12:16, Jeremy Dartigalongue wrote:
cela ma marque "erreur récupération ou écriture du nom" que j'ai indiquer dans le else
Oui bien sûr, c'est le message que tu affiches ! C'est la valeur de hr qu'il faut lire !
On 16 oct, 12:16, Jeremy Dartigalongue <cannabi...@orange.fr> wrote:
cela ma marque "erreur récupération ou écriture du nom" que j'ai
indiquer dans le else
Oui bien sûr, c'est le message que tu affiches !
C'est la valeur de hr qu'il faut lire !