【问题标题】:How to listen to windows events in C#?如何在 C# 中监听 windows 事件?
【发布时间】:2012-09-02 02:52:34
【问题描述】:

我正在开发一个与歌词相关的应用程序,我需要收听 Windows Media Player 事件。 我在“Accessible event watcher”中观察了windows事件,我发现WMP在状态或当前位置发生变化时会发送一些事件。 我在 MSDN a How to set a Windows hook in Visual C# .NET 上搜索并找到了这篇文章,但我无法让它工作。

如何从我的 C# 应用程序中收听这些事件,或者对使用其他方法获取当前歌曲和 WMP 播放状态的任何建议?\

谢谢

【问题讨论】:

    标签: c# com-interop winapi wmp


    【解决方案1】:

    本文描述了如何使用AxWindowsMediaPlayer 获取事件,它是 windows 媒体播放器系统的底层根。你会看到各种状态变化事件都能正常拾取。

    http://msdn.microsoft.com/en-us/library/windows/desktop/dd562388(v=vs.85).aspx

    你应该可以从windows ROT(Running objects table)获取一个正在运行的实例?

    http://www.darinhiggins.com/the-running-instance-of-windows-media-player/

    编辑:

    这是另一种方式...

    http://www.darinhiggins.com/gaining-access-to-a-running-instance-of-windows-media-player-in-vb-net/

    【讨论】:

    • 感谢 Visual Micro,我相信这会在窗体上创建一个新的 WMP 控件实例,但是我需要访问自己的窗口的 WMP 而不是创建一个新的。
    • 有什么方法可以从 ActiveX 访问系统的主 WMP 实例?
    • 我已经查看了您发送的链接。我是 ROT 的新手,这正是我想要的。但它不适用于 Windows Media Player。我对 WMP 的 progId 有疑问。我已经用 Word2010 等其他一些应用程序测试了 GetActiveObjects (System.Runtime.InteropServices.Marshal.GetActiveObject),它与这个 progId 'Word.Application' 一起工作。如何获取 Windows Media Player 的 progId?
    • 这听起来有点痛苦。我已经看到了一些可能性,但是用一些有趣的东西扩展了上面的答案。我希望:)
    • 谢谢。我已经检查了一点。我认为这就是解决方案:)
    【解决方案2】:

    【讨论】:

    • 感谢您的快速回复 lulia,
    • 我查看了您建议的文章,但是它们可以在 Windows 窗体上使用 WMP 控件时使用,但我需要获取当前媒体和用户在自己的 WMP 中播放的歌曲的状态窗户。
    猜你喜欢
    • 2011-07-25
    • 2022-01-01
    • 1970-01-01
    • 2012-07-23
    • 2020-11-22
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多