微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#+ iTunes COM:iTunes事件有时会升起,通常不会

我正在制作一个实用程序,让我用热键控制iTunes(通过COM库)。 热键工作,和iTunes的控制,像下一个和上一个跟踪所有的工作。

这个工具的另一部分是显示歌曲改变时的通知。 通过一些阅读和实验,我发现OnPlayerPlayEvent上的正确事件是OnPlayerPlayEvent ,所以当我把它挂在托盘通知上的时候,它绝对完美的工作。

我遇到的问题是绝大多数时候我运行我的程序,这个事件似乎并没有被提出。 但是,很less, 如果我的代码没有任何改变 ,事件就会被提出,我的工具提示就会出现。

这是我如何设置我的iTunes对象:

在使用事件驱动套接字时如何生成networking事件FD_WRITE?

正确地通知系统范围内的所有监听者手动重置事件,然后立即重置

如何实现javafx鼠标事件“按住”?

从另一个Windows应用程序捕获用户事件(button点击等)

填充Windows XP安全事件日志

itunes = new iTunesAppClass(); itunes.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(itunes_OnPlayerPlayEvent);

这是事件处理程序:

private void itunes_OnPlayerPlayEvent(object iTrack) { IITTrack track = iTrack as IITTrack; CurrentTrack = track; // ... notification. }

有任何想法吗?

编辑:试了一下之后,似乎事件触发了一个新的实例iTunes打开,我的应用程序连接到第一次的实例。 也就是说,如果iTunes和我的实用程序(带有工作通知)都打开了,应closures并重新打开我的实用程序,它的通知将不起作用。 但是,如果我closures并重新打开iTunes,那么我的实用程序,通知将工作。

这似乎是问题,因为如果我closures了我的实用程序,然后尝试closuresiTunes,则iTunes会告诉我脚本界面仍在被应用程序使用( 即使它不是 )。

因此,似乎iTunes只会为第一个注册的应用程序触发事件,或者iTunes试图为不存在的应用程序触发事件,失败,并在针对其他应用程序触发事件之前停止。

那么我应该问的是,有没有办法在退出时用iTunes取消注册我的应用程序? 或者,甚至可能取消注册除我以外的所有注册的应用程序?

聚集Windows事件查看器事件

警告 – 无法访问运行wevtutil的提供程序资源

检测使用C#更改的活动窗口而不进行轮询

(Linux)从PID:VID连接的USB设备获取/ dev / input / eventX

Bing地图Windows Phone上的图钉数量未知。 我如何为每个人创build一个事件?

@ OG-我确实找到了解决问题的办法:

public void Destroy() { // Remove any handlers from the iTunes COM object. itunes.OnPlayerPlayEvent -= itunes_OnPlayerPlayEvent; // Release the COM object. Marshal.ReleaseComObject(itunes); }

调用Form的FormClosing事件上的Destroy方法,以便每次关闭应用程序时都会释放它。 把这段代码翻译成VB.NET应该是相当简单的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐