【问题标题】:How to use Windows Media Player?如何使用 Windows 媒体播放器?
【发布时间】:2023-03-20 04:15:02
【问题描述】:

我有一个用 C++ 6.0 编写的旧应用程序。此应用程序在制造环境中管理一些声音以用于警报目的。

现在我想进行一些修改并使用 Windows Media Player。我对 C++ 的了解有限。有点迷失在指针中......

这是我到目前为止所做的:

使用类向导将包装类添加到 wmplib.dll 并包含“wmp.h”。 在 .cpp 文件中。

IWMPPlayer *player = new IWMPPlayer();
//player.SetUrl("http://streampoint.radioio.com/streams/57/45ec8c85a2a8a/listen.pls");
player->SetEnabled(true);
player->SetUrl("C:\\tada.wav");

IWMPControls *pControls = new IWMPControls();
*pControls = player->GetControls();

pControls->play();  

有什么建议吗?

谢谢

【问题讨论】:

  • 在将new 的结果存储在普通指针中时应该小心,因为即使在函数中发生异常时手动确保调用delete 也需要注意。有关详细信息,请参阅stackoverflow.com/questions/106508/…,或查看“资源获取即初始化”又名 RAII 是什么。但我真的不明白你的问题是什么。您是否遇到任何错误,或者您是在询问如何执行特定任务?
  • 感谢您的建议。我需要的只是打开播放器并播放声音(最终是来自互联网的流)。但我收到警告“警告:尝试使用 NULL m_lpDispatch 调用 Invoke!”执行 SetEnabled() 和 SetUrl() 时。 GetControls() 导致访问冲突。
  • 什么是 C++ 6.0?我猜你的意思是 MS Visual C++ 6,又名 Visual Studio 98。我强烈建议不要在任何当前的 C++ 开发中使用它,包括学习用 C++ 编程。
  • 是的,我的意思是 MS Visual Studio C++ 6。事实上,我更喜欢用 C# 开发,但我正在开发的程序是 MSVC++6 并且不可能迁移到 C#,短期而言.

标签: c++ windows-media-player


【解决方案1】:

我终于找到了办法。

起初,我想这样做,而不必在视图中包含 WMP ActiveX。所以我最终添加了它,然后使用 ClassWizard 在视图中创建关联的成员变量。

创建的成员变量是CWNDPlayer4类型的。

这是我使用的代码:

m_BackgroundPlayer.SetUrl(m_Url);
m_BackgroundPlayer.GetSettings().SetVolume(100);
m_BackgroundPlayer.GetControls().play();

m_Url 是与用户在其中键入 URL 的文本框关联的成员变量。

我使用的是 Windows Media Player 10.00.00.4081,我的环境是 Windows XP Pro SP3。

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多