![]() |
Away-Message des MSN Messenger verändern
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:
Die Prozedur ist denkbar einfach aufzurufen:
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;
Delphi-Quellcode:
aReset: Wenn true, wird die normale Persönliche Statusnachricht wieder angezeigt
procedure ChangeMSNActivity(aReset: boolean; aArtist, aAlbum, aTitle: string; aActivityType: string = 'Music'; aDisplayFormat: string = '{0} - {1}'; aWMContentID: string = '');
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 :zwinker: ) *Aktivitäts-Typen:
**Formatstring aDisplayFormat: Dieser String formatiert die übergebenen Parameter aArtist, aAlbum und aTitle zur Anzeige im Messenger. Dabei sind folgende Platzhalter möglich:
Beispielaufrufe:
Delphi-Quellcode:
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.
//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, '', '', ''); 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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz