通过 COM 控制 iTunes






4.11/5 (13投票s)
2004 年 7 月 15 日
3分钟阅读

180817

2595
一个关于通过系统托盘应用程序在 C# 中使用 COM 控制 iTunes 的示例。
引言
Apple 的 iTunes 是一款强大的音频库管理器和播放器,现在可用于 Windows 和 Mac。它的功能集是无穷无尽的,并且不断扩展,值得庆幸的是,通过 COM,第三方开发人员可以访问其中的大部分功能,即使通过 .NET Framework 及其互操作能力也是如此。
我构建了一个简单的演示应用程序来演示使用 iTunes COM 接口可用的各种功能。此应用程序绝不代表该接口的全部功能,而是旨在展示不同的功能。 Apple 的开发者网站有一个 SDK,其中包含完整的 COM 接口。
我的应用程序是一个系统托盘实用程序,用于轻松控制 iTunes 并显示当前播放的曲目。它通过 COM 调用方法、更改属性和接收事件。 它实现了播放、暂停、停止和更改当前播放曲目的基本功能,以及在曲目更改时弹出一个窗口。
实例化 iTunes 应用程序
为了访问 iTunes 提供的功能,您必须首先向您的项目添加对 iTunes COM 库的引用。 右键单击解决方案资源管理器中的项目,选择“添加引用...”。 选择 COM 选项卡,找到“iTunes 1.1 Type Library”,单击“选择”,最后单击“确定”。 现在,您将在该项目的“引用”列表中看到“iTunesLib”。
接下来,在任何想要与 iTunes 通信的文件中,添加以下指令
using iTunesLib;
为了控制 iTunes,您必须创建控制接口的新实例。 此接口允许您的程序与已打开的 iTunes 实例通信并控制它(以及被它控制)。
private myiTunes = new iTunesAppClass();
使用此 myiTunes
成员,您可以访问 Play()
、Pause()
、Stop()
和 Quit()
等函数。 如果由于某种原因 iTunes 已关闭,并且您的应用程序继续尝试与其通信,则会抛出 COMException
。
从 iTunes 接收事件
myiTunes
成员还允许访问某些事件,例如新曲目开始播放、当前曲目停止等。 要为其中一个事件指定新的事件处理程序,iTunesLib
使用与 C# 中所有其他事件相同的委托模型
// Add Event Handler
myiTunes.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(
myiTunes_OnPlayerPlayEvent);
// Event Handler
protected void myiTunes_OnPlayerPlayEvent(object iTrack)
{
...
}
iTrack
参数提供有关当前播放曲目的信息,但为了获取此信息,我们必须首先将 iTrack
强制转换为 IITTrack
变量。
string myArtist, myName;
IITTrack myTrack = (IITTrack) iTrack;
myArtist = myTrack.Artist;
myName = myTrack.Name;
这绝不是 IITTrack
接口中提供的所有信息。 更多信息请参见 Apple 的文档。
结论
我希望我已经仅仅激起了您对使用控制 Apple 强大的音频应用程序 iTunes 可以做什么的兴趣。可能性是无穷无尽的:您可以批量将您的媒体转换为不同的格式、组织和管理播放列表以及批量重命名曲目等等。请查阅 Apple 的 SDK 以获取更多信息。它在示例方面含糊不清,但它包含有关所有接口、它们的作用以及可以通过每个接口访问哪些成员和函数的信息。
此外,我希望我已经向您介绍了 COM(组件对象模块)的概念及其在您自己工作中的潜力。 无论是利用其他 COM 组件的功能还是创建您自己的 COM 组件,我认为您会发现它在正确的情况下非常有用。
系统要求
已知此软件可在以下配置下工作
- Microsoft Windows XP SP1 或更高版本
- Microsoft .NET Framework 1.1
- Apple iTunes 4.6
该软件可能在不同的配置下工作,但迄今为止尚未得到验证。
已知问题
AnimateWindow
WinAPI 函数无法正常淡入弹出显示。- 当弹出窗口显示时,如果曲目已更改,则弹出窗口计时器不会重置。
历史
- 2004 年 7 月 14 日 - 文章发布