
A mellékelt alkalmazás kipróbálása előtt meg kell győződnünk arról, hogy a rendszerünkben – amennyiben nem Windows XP operációs rendszerrel rendelkezünk - telepítve van a Windows Messenger szolgáltatás, és elérhető.
Annak érdekében, hogy a mellékelt alkalmazásból elérhessük a Windows Messenger e-mail küldő funkcióját, rendelkeznünk kell a megfelelő bővítménnyel. A cikk elején olvashat a Messenger szolgáltatásról, és a bővítmények beszerzésének módjáról.
Windows Messenger szolgáltatás
A Microsoft Windows Messenger egy olyan sokoldalú szolgáltatáscsomag része, melynek segítségével azonnali kommunikációt vagyunk képesek folytatni a partnerlistára felvett ismerőseinkkel írásban vagy szóban. A rendszer alapja a .NET Passport szolgáltatás, melynek révén egy rendszer (.NET Passport kiszolgáló) kezeli a bejelentkezési információkat, és ezeket használhatjuk az összes – napról napra növekvő számú -, „Passport-képes” Web-helyen.
A Messenger szolgáltatás eléréséhez is egy ilyen .NET Passport igazolványra van szükségünk, melyet természetesen díjmentesen kaphatunk a Microsoft-tól, a következő Webcímen:
http://www.passport.net/Consumer/Default.asp?lc=1038
A fenti Web-helyen további információkat találunk a szolgáltatással kapcsolatban. A Windows Messenger használata előtt meg kell kapnunk ezt az igazolványt, mely egy általunk választott jelszóból áll, ami kizárólag a megadott elektronikus levélcímmel együtt érvényes.
A Messenger szolgáltatásba történő bejelentkezéskor is ezeket az adatokat kell megadnunk. Amennyiben nem rendelkezünk a Windows Messenger-rel, letölthetjük azt rendszerünkre a következő címről:
http://www.microsoft.com/windows/messenger/hu/default.asp
A Messenger telepítése után néhány COM komponens regisztrálódik a rendszerünkben, melyek egyikére van szükségünk ahhoz, hogy a szolgáltatást kódjainkból elérjük.
A COM komponens referenciájának hozzáadásához válasszuk a Project - Add Reference menüpontot, majd a megjelenő ablakban a COM lapon keressük elő a Messenger API Type Library elemet. Ha megvan, akkor Select és OK gomb.
A MessengerAPI névtérben ezt követően elérhetjük azokat az objektumokat, melyek használhatják a szolgáltatás funkcióit.
Messenger bővítmények
A Windows Messenger alapértelmezésben nem tartalmazza azokat a bővítményeket, melyekkel bizonyos kiegészítő funkciók érhetők el. Ilyen funkció lehet az elektronikus levél küldése a kiválasztott partnernek, ha az nincs bejelentkezve.
Annak érdekében, hogy ezzel rendelkezzünk, a Windows Messenger hivatalos Webhelyéről le kell azt töltenünk, és telepítenünk kell a rendszerünkben. A letöltést a következő URL-en kezdeményezhetjük:
http://www.microsoft.com/windows/messenger/HU/addin.asp
A fenti URL a cikk írásakor volt elérhető, azóta természetesen megszűnhetett.
Amennyiben a bővítménnyel nem rendelkezünk, úgy a funkció használatakor egy figyelmeztető ablak jelenik meg, melyen az IGEN gombra kattintva, elérhetjük az adott bővítmény-oldalt.
Gyakorlati felhasználás
A mellékelt alkalmazás betöltődésekor felvesszük a Messenger alkalmazással a kapcsolatot, vagyis létrehozunk egy példányt a szolgáltatás főobjektumából.
MessengerAPI.IMessenger msgr = new MessengerAPI.MessengerClass();
Ezt követően – amennyiben a szolgáltatás fut, és be vagyunk jelentkezve – lekérdezzük a partnereink listáját, valamint a partnerekkel kapcsolatos információk közül azt, hogy éppen milyen az állapota, valamint hogy milyen bejelentkezési címmel rendelkezik.
A partnereink listája a MessengerAPI névtér IMessengerContacts objektumán keresztül válik elérhetővé.
contacts = (MessengerAPI.IMessengerContacts)msgr.MyContacts;
Ez a kollekció a partnerek számának megfelelő mennyiségű MessengerAPI.IMessengerContact objektumot tartalmaz. Az objektumok FriendlyName property-je tartalmazza a partner által megadott, a listánkban látható nevet. Ezeket most kigyűjtjük a Form bal oldali ListBox kontroljában.
for(int i=0;i<contacts.Count;i++)
{
contact = (MessengerAPI.IMessengerContact) contacts.Item(i);
listBox1.Items.Add(contact.FriendlyName);
}
A ShowDetails metódusban keressük meg a bal oldali Listbox kontrolban kiválasztott partner egyéb adatait, és jelenítsük meg azokat a jobb oldali ListBox kontrolban.
Első lépésben a GetContact metódus segítségével meghatározzuk a kiválasztott partnert reprezentáló IMessengerContact objektumot, majd lekérdezzük a SigninName property-t, mely a Pasport bejelentkezési azonosítóját tartalmazza a partnernek, valamint a MISTATUS felsorolt típus segítségével meghatározzuk a partner aktuális állapotát.
MessengerAPI.IMessengerContact contact = GetContact();
listBox2.Items.Add("Login: " + contact.SigninName);
if (contact.Status == MessengerAPI.MISTATUS.MISTATUS_ONLINE)
{
listBox2.Items.Add("Állapot: Elérhető");
}
...
Amennyiben a partnerek egyikére kattintunk az egér jobb gombjával, megjelenik egy gyorsmenü, melyből négy funkció válik elérhetővé. Az első lehetőség, hogy azonnali üzenetet küldjünk a partnernek, vagyis megjelenítsük az ezt lehetővé tevő dialógusablakot. Ennek módja, hogy a partner meghatározása után meghívjuk az IMessenger objektum InstantMessage metódusát, a partnert reprezentáló IMessengerContact objektumot átadva paraméterként. Mindezt akkor tesszük meg, ha a partner elérhető állapotban van.
if (contact.Status == MessengerAPI.MISTATUS.MISTATUS_ONLINE)
{
msgr.InstantMessage(contact);
}
Egyéb esetben, vagy ha a második menüpontra kattintunk, akkor a partnernek elektronikus levelet küldhetünk, vagyis felbukkan az alapértelmezett levelezőprogram megfelelő ablaka. Ekkor az IMessenger objektum Sendmail metódusát hívjuk meg, a paraméter itt is az IMessengerContact objektum.
Amennyiben a partner elérhető, vagyis tudja fogadni a küldeményünket, akkor a harmadik menüpontra kattintva egy állomány küldését kezdeményezhetjük számára. Itt az IMessenger objektum SendFile metódusát hívjuk meg, a paraméter itt is az IMessengerContact objektum, valamint egy üres karakterlánc. Ez utóbbival jelezzük, hogy ki szeretnénk választani az állományt a meghajtók valamelyikéről.
msgr.SendFile(contact,"");
Az utolsó menüpontban egy élőszavas beszélgetést kezdeményezhetünk a kiválasztott partnerrel, vagyis meghívjuk az objektumunk StartVoice metódusát a partner objektumával a paraméterben.
if (contact.Status == MessengerAPI.MISTATUS.MISTATUS_ONLINE)
{
msgr.StartVoice(contact);
}
A beszélgetést itt is csak akkor kezdeményezhetjük, ha a partner aktív, vagyis be van jelentkezve.