[DELPHI] Messenger OnUserStateChanged event

Pagina: 1
Acties:

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Ik wil in mijn programma afvangen als een gebruiker van online status wijzigd op MSN.

Daarvoor moet ik dit event afvangen:

code:
1
OnUserStateChanged(LPDISPATCH pUser, long mPrevState, BOOL* pfEnableDefault)


Daar ben ik achter gekomen door dit programmatje te gebruiken.

Dit event is het enige event wat triggerd als een gebruiker online komt.

Nu heb ik de volgende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
procedure TfrmMSN.UserStateChanged(Sender: TObject; var pUser: OleVariant;
  mPrevState: MSTATE; var pfEnableDefault: OleVariant);
var
  Naam : string;
begin
  PostMessage(Self.WindowHandle,WM_USER+2,pUser,mPrevState);
end;

procedure TfrmMSN.OnlineMessage(var Msg: TMessage);
begin
  ShowMessage(IntToStr(Msg.WParam));
end;


Ik moet een message posten naar de mainform omdat de messagehandler van MSN niet multithreaded is. Dit werkt ook perfect.

Het probleem zit hem hier; volgens de event definitie moet pUser een Long Pointer naar een Dispatch Interface zijn. Hij stuurt altijd -1 terug. Ik krijg dus van MSN geen pointer terug naar de user die van state veranderd.

Ik heb de type library van MSN geimport. Delphi zet zelf de types op OleVariant.

Nu kan ik hier wel omheen werken door elke keer een snapshot te maken van alle online users en dan op het event kijken wie er online komt, maar ik doe het liever via die DispInterface omdat dat ook zou moeten werken. Wil iig begrijpen waarom hij het niet doet.

  • Tomatoman
  • Registratie: November 2000
  • Nu online

Tomatoman

Fulltime prutser

Dit komt op mij over alsof de parameters in de verkeerde volgorde binnenkomen. Ben je misschien ergens de 'stdcall' directive vergeten?

Een goede grap mag vrienden kosten.


  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
.

  • yodax
  • Registratie: Januari 2000
  • Laatst online: 28-04 08:47
Ik schop dit topic even omdat mijn vorige reactie de postcount niet omhoog deed, en dus het topic ook niet actief maakte, zie Post count topic niet goed