Delphi - Partnerek figyelése a Windows Messengerben

forráskód letöltése
Ebben a cikkben megnézzük, hogy hogyan programozhatjuk a Microsoft Windows Messenger programot. Készítünk egy panelt, amely a képernyő tetején helyezkedik el, és folyamatosan kijelzi számunkra a bejelentkezett partnereink állapotát.
A mellékelt példaprogram megnyitása előtt a Messenger_TLB.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A Windows Messenger program a Microsoft cég ingyenes szolgáltatása. A program ingyenesen letölthető az alábbi címről.
http://messenger.microsoft.com/hu/default.asp?client=0
A program interfészének használatához importálnunk kell a Messenger típuskönyvtárát. Ehhez válasszuk a Projects – Import Type Library menüpontot. Kattintsunk az Add feliratú gombra, majd keressük meg a Messenger program indító állományát, az „msmsgs.exe”-t. Az EXE alapértelmezés szerint a C:\Program Files\Messenger alkönyvtárban található. Az Import Type Library ablakban válasszuk az Install feliratú gombot, és telepítsük az állományban található komponenst.
Az ActiveX palettán megjelenik az MsgrObject komponenst.
Nyissunk egy új alkalmazást és helyezzük el rajta ezt a komponenst.
A komponens számos eseménnyel rendelkezik. Ezek közül számunkra a következők a fontosak: OnAppShutDown (kilépés a programból), OnLogOff (kijelentkezés), OnLogonResult (bejelentkezés), OnUserDropped (felhasználó lekapcsolása), OnUserJoin (partner bejelentkezése), OnUserLeave (partner kijelentkezése), OnUserStateChanged (partner állapotának változása). A felsorolt események mindegyikében frissítenünk kell alkalmazásunk kijelzését. A frissítést a RefreshUsers eljárás végzi.
A Form-on elhelyezett MsgrObject komponens automatikusan érzékeli, ha a Messenger programban valamilyen változás történik.
Az állapotok kijelzéséhez ikonokat is használunk. Ezek az ikonok a példaprogramhoz mellékelt icons alkönyvtárban találhatóak. A képek a Messenger program exe állományából származnak.
A saját számítógépünkön futó Messenger program állapotát a LocalState property-n keresztül kérdezhetjük le.
if MsgrObject1.LocalState<>MSTATE_OFFLINE then begin
A bejelentkezett felhasználók listáját a List[0] tömbön keresztül érhetjük el.
Users:=MsgrObject1.List[0];
A Users változóba egy IMsgrUsers típusú kollekció kerül, amely összes partnerünket tartalmazza. A kollekció egy eleme IMsgrUser típusú, amely egyetlen partnert képvisel.
User:=Users.Item(i);
Egy partner állapotát a State property tartalmazza.
case User.State of
Egy partner a következő állapotokkal rendelkezhet:
Állapot Jelentése
MSTATE_ONLINE elérhető
MSTATE_BUSY elfoglalt
MSTATE_BE_RIGHT_BACK rögtön jön
MSTATE_IDLE, MSTATE_AWAY nincs a gépnél
MSTATE_ON_THE_PHONE telefonál
MSTATE_OUT_TO_LUNCH ebédel
MSTATE_UNKNOWN ismeretlen
MSTATE_OFFLINE nincs bejelentkezve
Ha Form-unkat el akarjuk tüntetni a tálcáról, akkor a Create metódusban használjuk az alábbi utasítást.
SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);