AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Internet / LAN / ASP.NET Delphi Away-Message des MSN Messenger verändern
Thema durchsuchen
Ansicht
Themen-Optionen

Away-Message des MSN Messenger verändern

Ein Thema von Aenogym · begonnen am 3. Nov 2005
Antwort Antwort
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#1

Away-Message des MSN Messenger verändern

  Alt 3. Nov 2005, 10:45
Folgender Code bewirkt die Anzeige des aktuell gespielten Musiktitels, des aktuell gespielten Spiels oder einer beliebigen anderen Aktivität im MSN Messenger Version 7.0.0816 und höher. Andere Messenger-Nutzer können diese Nachricht auch sehen (wie vom "Was ich gerade höre:"-Feature bekannt).

Delphi-Quellcode:
procedure ChangeMSNActivity(aReset: boolean; aArtist, aAlbum, aTitle: string; aActivityType: string = 'Music'; aDisplayFormat: string = '{0} - {1}'; aWMContentID: string = '');
var
  hContactList: THandle; //das Handle der MSN Messenger Kontaktliste
  cdsCopyDataStruct: TCopyDataStruct; //benötigt für SendMessage
  wBuffer: array [0..127] of WideChar; //die Nachricht
begin
  //den Buffer initialisieren
  FillChar(wBuffer, SizeOf(wBuffer), #0);

  //wenn aReset = true, wird der Status auf die persönliche Statusnachricht zurückgesetzt
  //sonst wird der jeweilige Status (Music, Games, Office oder Empty) gesetzt und die Parameter übergeben.
  //Die Paramater werden durch den string '\0' voneinander getrennt (entspricht hier *nicht*
  // chr(0), da der Messenger den string intern auswertet!)
  if aReset then
    StringToWideChar('\0'+aActivityType+'\00\0\0\0\0\0'#0, @wBuffer[0], 128)
  else
    StringToWideChar('\0'+aActivityType+'\01\0' + aDisplayFormat + '\0' + aTitle + '\0' + aArtist + '\0' + aAlbum + '\0' + aWMContentID + #0, @wBuffer[0], 128);

  //das TCopyDataStruct für SendMessage vorbereiten
  FillChar(cdsCopyDataStruct, SizeOf(TCopyDataStruct), #0);
  with cdsCopyDataStruct do
  begin
    cbData := SizeOf(wBuffer); //größe der Nachricht
    dwData := $547; //"magic number", die den Messenger anweist, die Nachricht wie gwünscht zu interpretieren
    lpData := @wBuffer[0]; //die Nachricht
  end;

  //nun eine Windows Message an alle Messenger Kontaktlistenfenster senden
  // (falls mehrere Instanzen gestartet)
  hContactList := FindWindowEx(0, 0, 'MsnMsgrUIManager', nil);
  while hContactList <> 0 do
  begin
    SendMessage(hContactList, WM_COPYDATA, 0, Integer(@cdsCopyDataStruct));

    hContactList := FindWindowEx(0, hContactList, 'MsnMsgrUIManager', nil);
  end;
end;
Die Prozedur ist denkbar einfach aufzurufen:

procedure ChangeMSNActivity(aReset: boolean; aArtist, aAlbum, aTitle: string; aActivityType: string = 'Music'; aDisplayFormat: string = '{0} - {1}'; aWMContentID: string = ''); aReset: Wenn true, wird die normale Persönliche Statusnachricht wieder angezeigt
aArtist, aAlbum, aTitle: Künstler, Album und Titelname des aktuellen Songs*
aActivityType: Typ der Aktivität* ('Music', 'Games' oder 'Office'). Im Messenger wird ein entsprechendes Symbol angezeigt.
aDisplayFormat: Formatstring, der die übergebenen Parameter aArtist, aAlbum und aTitle formatiert**
aWMContentID: WindowsMedia-Content ID des Songs (Wird nicht benötigt - Es dürfte recht schwer für nicht-Microsoftler sein, diese ID abzufragen )

*Aktivitäts-Typen:
  • 'Music' - Im Messenger wird ein Kopfhörer-Icon neben dem Displaytext angezeigt und der Displaytext fungiert als Link zum MSN-Music Shop, wo man den jew. Song kaufen kann
  • 'Games' - Im Messenger wird ein Spiele-Icon neben dem Displaytext angezeigt. Kein Link
  • 'Office' - Im Messenger wird das Microsoft Office-Icon neben dem Displaytext angezeigt. Kein Link

**Formatstring aDisplayFormat:
Dieser String formatiert die übergebenen Parameter aArtist, aAlbum und aTitle zur Anzeige im Messenger. Dabei sind folgende Platzhalter möglich:
  • '{0}' - Titelname
  • '{1}' - Künstler
  • '{2}' - Album

Beispielaufrufe:
Delphi-Quellcode:
//einfache Angabe eines Liedes (Resultat im Messenger: 'Fiesta Remix - Jay-Z feat. R. Kelly & DJ Envy')
ChangeMSNActivity(false, 'Jay-Z feat. R. Kelly & DJ Envy', 'TP3', 'Fiesta Remix');

//einfache Angabe eines Spiels (Resultat im Messenger: 'Spielt Tetris')
ChangeMSNActivity(false, 'Tetris', '', '', 'Games', 'Spielt {1}');

//einfache Angabe einer "Büro-Aktivität" (Resultat im Messenger: 'Surft im Internet')
ChangeMSNActivity(false, 'Tetris', '', '', 'Office', 'Surft im Internet');

//geändertes Format für Lieder (Resultat im Messenger: 'Jay-Z feat. R. Kelly & DJ Envy - Fiesta Remix (TP3)')
ChangeMSNActivity(false, 'Jay-Z feat. R. Kelly & DJ Envy', 'TP3', 'Fiesta Remix', 'Music', '{1} - {0} ({2})');

//GANZ WICHTIG: Zurücksetzen der Aktivität und Anzeigen der standardmäßigen Persönlichen Statusnachricht:
ChangeMSNActivity(true, '', '', '');
Hinweis: Seit der Version 7.0 bietet der MSN Messenger die Möglichkeit, den aktuell gespielten Musiktitel für andere Sichtbar zu machen. Dieses Feature war anfangs nur mit dem WindowsMediaPlayer nutzbar, später auch mit iTunes und durch ein WinAMP-PlugIn.
Clevere disassemblierer sind dem System auf die Schliche gekommen und haben den Code veröffentlicht, der es jedem Programmierer ermöglicht, eigene Songtitel zu setzen. Microsoft hat das System mit der aktuellen Messenger-Version 7.5 geändert.
Es kann also sein, dass sich die Redmonder mit der nächsten Version wieder etwas neues einfallen lassen und dieser Code infolgedessen nicht mehr funktionieren wird (gerade in Hinsicht auf den neuen "MSN Live Messenger"). Ich werde mich bemühen, den hier veröffentlichten Code in diesem Falle zu aktualisieren

[edit=Chakotay1308]Titel angepasst, Thread verschoben. Mfg, Chakotay1308[/edit]
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz