Msn - "ce que j'écoute" et pseudo ( nickname ) texte défilant/clignotant/date/heure ...

Description

Ce code sert faire défiler n'importe quoi dans "ce que j'écoute" sur MSN...
Vous pouvez ouvrir un texte et il le lira en entier...
Vous pouvez faire défiller ligne à ligne le texte
Il y a une fonction horloge et compte à rebours...

Je viens de rajouter une option permettant d'afficher tout sa dans le pseudo à la place...
(hook clavier)
mais c'est pas super au point (MSN défois sature et affiche un message comme quoi qu'il faut réessayer plus tard, et cela, peut créer des bugs)
J'ai toutefois changé les valeurs Min et Max (temporelles afin de bugger le moins possible...)
cette option est à utiliser avec prudence...

Toute remarque est la bienvenue...

Source / Exemple :


procedure CurrentPlay(ARTIST,ALBUM,TITLE:string;icone:integer);
var
  handleMSN    : THandle;
  structCopy  : TCopyDataStruct;
  stringBuffer : array [0..127] of WideChar;
  icones: string;
begin

    FillChar(stringBuffer,SizeOf(stringBuffer),#0);
// Si icone vaut 0 alors MSN Ce que j''écoute sera désactivé
// Si icone:=1   =>  icone Music
// Si icone:=2   =>  icone Games
// Si icone:=3   =>  icone Office
    icones:='Music';
    if icone>=2 then
      begin
      icones:='Games';
        if icone=3 then
        icones:='Office';
      icone:=1;
    end;
    StringToWideChar('\0'+icones+'\0'+inttostr(icone)+'\0'+'{0} - {1}'+'\0'+ARTIST+'\0'+TITLE+'\0'+ALBUM+'\0'+'WMContentID'+#0,@stringBuffer[0],128);

    FillChar(structCopy,SizeOf(TCopyDataStruct),#0);
    with structCopy do
    begin
      cbData := SizeOf(stringBuffer);
      dwData := $547;
      lpData := @stringBuffer[0];
    end;

    handleMSN := FindWindowEx(0,0,'MsnMsgrUIManager',nil);
    while handleMSN <> 0 do
    begin
      SendMessage(handleMSN,WM_COPYDATA,0,Integer(@structCopy));
      handleMSN:=FindWindowEx(0,handleMSN,'MsnMsgrUIManager',nil);
    end;
end;

//Hook clavier changeant le Pseudo (ou Nickname)

procedure TForm1.ChangeNick(line:wideString);
var
messengerhwnd,bak : HWND ;
i:integer;
begin
//on copie dans le clipboard le texte
Clipboard.AsText :=line;
//on sauvegarde le handle en premier plan
bak:=GetForegroundWindow();
//on trouve celui d''MSN
//sa ne marche que si MSN n''est pas dans le system tray
messengerhwnd := FindWindow(nil,'MSN Messenger');

if messengerhwnd <> 0 then
 begin
//on affiche MSN Messenger
SetForegroundWindow(messengerhwnd);
sleep(50);

// on va dans les options
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_MENU,0, KEYEVENTF_KEYUP,0);
for i:= 1 to 3 do
begin
keybd_event(VK_RIGHT,0,0,0);
keybd_event(VK_RIGHT,0, KEYEVENTF_KEYUP,0);
end;
for i:= 1 to 2 do
begin
keybd_event(VK_UP,0,0,0);
keybd_event(VK_UP,0, KEYEVENTF_KEYUP,0);
end;
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
for i:= 1 to 9 do
begin
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0, KEYEVENTF_KEYUP,0);
end;

//on colle (CTRL + V)
keybd_event(VK_CONTROL,0,0,0);
keybd_event(VkKeyScan('v'),0,0,0);
keybd_event(VkKeyScan('v'),0, KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0, KEYEVENTF_KEYUP,0);

//et on valide
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0, KEYEVENTF_KEYUP,0);
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);

end
else
showmessage('MSN n''est pas visible ou n''est pas actif...');

//on attend un peu pour être sur que MSN ne soit pas encore au dessus.
sleep(100);
SetForegroundWindow(bak);
end;

Conclusion :


Mercie à jinh68 qui ma fourni le code de base pour communiquer avec MSN...

L'exe est téléchargeable ici :
http://poulphunter1.free.fr/Download/Mesprogs/MSN.exe

Sinon vu le taux de rafraichissement du pseudo il est conseillé de mettre comme intervale 500ms pour bien pouvoir lire le texte... (et ne pas sauter des mots)

Merci à lotficrew qui m'a donné l'idée de rajouter cette fonction (avec un hook de base)...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.