【问题标题】:Windows Live Messenger "What I'm listening to" functionWindows Live Messenger“我在听什么”功能
【发布时间】:2014-04-27 21:43:37
【问题描述】:

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

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

编辑:

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

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

【问题讨论】:

  • 你不能在这里问这样的问题。你应该具体!根据您的问题,您是否希望我们给您讲讲如何建立这一点?如果您对某事感到震惊,您可以询问与编程相关的问题。请阅读常见问题解答!
  • 对不起,我想我没有说清楚。我在问是否有可以用来访问该功能的库、dll、API 或类似的东西。看到好几个这样的问题,没想到问错了。
  • @Deepak:OP 的原始(未经编辑)问题对我来说似乎很清楚(尽管可能是用他的第二语言编写的),并且看起来很适合本网站的问答格式。另一方面,您的评论不属于本网站:您给人的印象是粗鲁和傲慢。这种与新用户的交流不会帮助 SO 成长为一种资源。阅读this
  • @sjwarner 我的评论是在 OP 编辑​​帖子之前!可能现在不适合这个问题。请忽略..
  • 你可以让你的应用伪装成winap或其他支持的播放器,但是当你的应用和winamp同时运行时可能会导致一些问题

标签: c++ qt windows-live-messenger


【解决方案1】:

由于您可以检查许多实现此功能的开源项目(如 MPC-HC、PsyMP3、Songbird ... 等),我将解释它是如何完成的:

首先你构建一个如下所示的 Unicode 字符串:

播放器\0类型\0播放中\0格式\0艺术家\0类型\0专辑\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);

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多