【问题标题】:WMP interfacace is blocking WMP from user interactionWMP 接口阻止 WMP 与用户交互
【发布时间】:2015-05-21 19:08:24
【问题描述】:

我的 MFC 程序远程处理 WMP 实例以捕获 WMP 事件,并使用 IWMPCoreIWMPCore3IWMPPlaylistCollectionIWMPMediaCollection 使用 COM 与 WMP 交互。远程实例正在查找并且可以捕获事件,但是当我开始获取所有歌曲(几乎 5100 首歌曲)的所有详细信息时,WMP 停止响应,直到我的应用程序获取所有歌曲并释放所有上述实例。谁能帮我解决这个问题以及如何解决?

【问题讨论】:

    标签: com mfc windows-media-player wmp


    【解决方案1】:

    WMP ActiveX 控件是一个 STA COM 对象,因此所有交互(方法调用)都经过实例化线程,在大多数情况下是 UI 线程。也就是说,无论您对接口做什么,调用都会在调用期间阻塞 GUI。

    您需要在活动中间发送窗口消息以解锁 UI(显示进度并让用户点击取消按钮),或者创建一个初始化为 STA 的工作线程并使用 WMP 的辅助不可见实例获取集合详细信息在那里。

    【讨论】:

    • 实际上我只是将 WMP COM 代码移到了主线程以外的线程。这工作得很好。 :)
    猜你喜欢
    • 1970-01-01
    • 2016-05-06
    • 2013-01-11
    • 2021-05-08
    • 2017-11-02
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多