Bonjour,
Je viens de finir la réalisation d'un lecteur de fichiers audio, et par curiosité sur la façon de proceder, j'aimerais savoir comment informer msn messenger de la musique en cours de diffusion sur mon lecteur.
Merci de votre aide.
Bonjour,
Je viens de finir la réalisation d'un lecteur de fichiers audio, et par curiosité sur la façon de proceder, j'aimerais savoir comment informer msn messenger de la musique en cours de diffusion sur mon lecteur.
Merci de votre aide.
Regarde cet article :
http://frechy.developpez.com/persmsn/
C'est du C# mais la logique est la même en Delphi.
Bon dev!
Merci de l'info, je suis allé voir, mais tous cela reste du charabia etant donné que je ne connais pas spécialement bien la prog objet ni le C#.
Quelqu un pourrait il m eclairer le debut de l article avec les deux premieres fonctions ?
Salut!
J'ai trouvé des version traduites en Delphi qui sauront probablement t'aider. En gros, il s'agit de trouver la fenêtre de Messenger (avec FindWindowEx) et de lui envoyer un message (via SendMessage) bien spécifique.
Voici la méthode qui change le texte :
Pour désactiver le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 procedure ChangeMSNMessage(const Msg: string); const ACTIVATE_BASE_STR = '\0Office\01\0{0}\0%s\0\0\0WMContentID' + #0; var H: THandle; structCopy: TCopyDataStruct; stringBuffer: array [0..127] of WideChar; begin FillChar(stringBuffer, SizeOf(stringBuffer), #0); StringToWideChar(Format(ACTIVATE_BASE_STR, [Msg]), @stringBuffer[0], 128); FillChar(structCopy,SizeOf(TCopyDataStruct),#0); with structCopy do begin cbData := SizeOf(stringBuffer); dwData := $547; lpData := @stringBuffer[0]; end; H := 0; repeat H := FindWindowEx(0, H, 'MsnMsgrUIManager', nil); if H <> 0 then SendMessage(H, WM_COPYDATA, 0, Integer(@structCopy)); until H = 0; end;
Bon dev!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 procedure DeactivateMSNMessage; const DEACTIVATE_BASE_STR = '\0Office\00\0{0}\0\0\0\0WMContentID' + #0; var H: THandle; structCopy: TCopyDataStruct; stringBuffer: array [0..127] of WideChar; begin FillChar(stringBuffer, SizeOf(stringBuffer), #0); StringToWideChar(DEACTIVATE_BASE_STR, @stringBuffer[0], 128); FillChar(structCopy,SizeOf(TCopyDataStruct),#0); with structCopy do begin cbData := SizeOf(stringBuffer); dwData := $547; lpData := @stringBuffer[0]; end; H := 0; repeat H := FindWindowEx(0, H, 'MsnMsgrUIManager', nil); if H <> 0 then SendMessage(H, WM_COPYDATA, 0, Integer(@structCopy)); until H = 0; end;
Bonsoir,
Lors de mes recherches je suis aussi tombé sur des sources contenant le même code d'envoi. Je n'avais en revanche pas trouvé celui de désactivation fort utile.
Cependant, avec la fonction de modification du message personnel de messenger, la modification a lieu une fois. Puis, à l'aide d'un timer, si je redemande une modification de ce message, elle n'a pas lieue.
La mise à jour est effectuée si je desactive puis réactive "ce que j'écoute" directement depuis messenger.
Dois je en deduire que pour envoyer une nouvelle chaine, je dois d abord faire appel à deactivate puis activate ?
Salut!
Perso, je n'ai besoin de DeactivateMSNMessage qu'à la toute fin. ChangeMSNMessage remplace le message en cours.
Bonjour,
As tu essayé avec windows live messenger ou avec msn7?
Ok je vais réessayer avec tes fonctions. Toutefois je ne comprend pas bien l'interet du repeat until H <> 0 de la premiere.
Saurais tu m'expliquer ? (un seul sendmessage ne suffit il pas ? pourquoi une boucle de ce type est elle necessaire ici ?)
Honnêtement, je ne saurais te dire. J'ai trouvé ce code et l'ai adapté il y a longtemps. Peut-être est-ce pour les cas où il y a plusieurs instances de Messenger ouvertes simultanément.
Partager