3

如何使用 Windows Live Messenger 的“我在听什么”功能?如何与 WLM 通信以发送歌曲信息,以便 Messenger 设置状态?我正在用 C++ (Qt) 编码

我搜索了整个网络,但一无所获,甚至在其他编程语言中也没有。

编辑:

看来我没有说清楚。我不想演练。我想知道是否有 API、库或任何与 Windows Live Messenger 通信以使用该功能的东西,就像 WMP、Winamp 和 iTunes 等媒体播放器一样。

我搜索了 Live Connect API,但没有找到任何相关信息。

4

2 回答 2

2

由于有许多开源项目实现了这个功能,你可以检查一下(如 MPC-HC、PsyMP3、Songbird 等),我将解释它是如何完成的:

首先,您构建一个 Unicode 字符串,如下所示:

Player\0Type\0Playing\0Format\0Artist\0Type\0Album\0GUID\0

(\0 不是 NUL,所以一定要避开它们)

  • 播放器:您的音乐播放器的名称
  • 类型:媒体类型,此处:“音乐”
  • 播放中:1代表播放,0代表停止
  • 格式:“正在播放”旁边的字符串,例如:A3FPlayer: {1} - {0}
  • 艺术家、标题和专辑不言自明
  • GUID:WMCONTENTID

然后你像这样构建一个 COPYDATASTRUCT:

COPYDATASTRUCT data;
data.dwData = 0x0547; //1351 decimal
data.lpData = (PVOID)(LPCWSTR)MsnMsg;
data.cbData = MsnMsgSize * 2 + 2;

最后将该结构传递给MsnMsgrUIManager您可以找到的句柄FindWindowEx

HWND hWnd = FindWindowEx(NULL, NULL, L"MsnMsgrUIManager", NULL);
SendMessage(hWnd, WM_COPYDATA, (WPARAM)NULL, (LPARAM)&data);
于 2013-01-03T11:02:58.967 回答
1

a3f 通过一些代码提供了一个很好的答案。但是,如果您确实发现他的回复有点令人困惑,这里是我在为 PsyMP3 编写接口代码时编写的各种“API”参考。我唯一要说的是,我会将 GUID 部分写为“WMContentID”,因为这是我在使用 WinSpy 窥探窗口消息时看到的 Windows Media Player 传递给 MSN 的。

无论如何,我的相关接口文档在这里:

http://code.google.com/p/psymp3/wiki/MsnMsgrUiManager

于 2013-02-17T11:29:19.573 回答