C# - A Windows Messenger programozásának alapjai

forráskód letöltése
A Windows Messenger alkalmazás igen hasznos segítség a partnerekkel történő kommunikációban, ráadásul a Microsoft ezen szolgáltatása ingyenes. Nem keverendő össze a szolgáltatás a MSN Messenger alkalmazás által nyújtott lehetőségekkel. Minden előnye mellett talán a legnagyobb az, hogy alkalmazásainkban is elérhető a szolgáltatás, csupán egy COM komponenst kell projektjeinkhez adni. Cikkünkben megismerkedhetünk a Messenger programozásának alapjaival.
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ő.
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, mely 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 Messengerrel, 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 1.0 Type Library elemet. Ha megvan, akkor Select és OK gomb.
A Messenger névtérben ezt követően elérhetjük azokat az objektumokat, melyek használhatjuk a szolgáltatás funkcióit. Az alkalmazás indításakor létrehozunk egy példányt a szolgáltatás főobjektumából, majd a Services property PrimaryService tulajdonságával lekérdezzük az aktuális szerviz objektumot.
msgr = new Messenger.MsgrObjectClass();
service = msgr.Services.PrimaryService;
A főobjektum LocalState property-je adja meg, hogy a Messenger éppen milyen állapotban van, vagyis be vagyunk-e jelentkezve, vagy sem. Amennyiben be vagyunk jelentkezve, akkor lekérdezzük, hogy milyen partnereink vannak bejegyezve, és ezek milyen adatokkal rendelkeznek.
if (msgr.LocalState != Messenger.MSTATE.MSTATE_OFFLINE)
{
  ...
A CollectPartners metódussal gyűjtjük ki a partnereket, és jelenítjük meg adataikat a ListView kontrolban.
A főobjektum get_List metódusa adja vissza a partnerlistát, vagyis egy MsgrUsers kollekciót.
Messenger.IMsgrUsers users = msgr.get_List(MLIST.MLIST_CONTACT);
Minden egyes partner egy-egy MsgrUser objektum, melyeknek FriendlyName property-je tartalmazza a felhasználó nevét, mely megjelenik a listában. A LogonName property-ben pedig a bejelentkezési elektronikus levélcím található. A partner aktuális állapotáról a State property lekérdezésével kaphatunk információkat.
data[0] = user.FriendlyName;
data[1] = user.LogonName;
...        
if (user.State.ToString() == "MSTATE_OFFLINE")
{
  data[2] = "Nem elérhető";
}
else if (user.State.ToString() == "MSTATE_ONLINE")
{
  data[2] = "Elérhető";
}
...
Amennyiben nem vagyunk a szolgáltatásba bejelentkezve, akkor a főobjektum Logon metódusával tehetjük azt meg. Ekkor első paraméterben meg kell adnunk a bejelentkezési nevünket, második paraméterként a jelszavunkat, majd harmadikként az aktuális szolgáltatás objektumot.
msgr.Logon(service.LogonName,textBox2.Text,service);
A kijelentkezéshez használhatjuk a Logoff metódust, mely nem rendelkezik paraméterekkel.
msgr.Logoff();