我正在制作一个实用程序,让我用热键控制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] 举报,一经查实,本站将立刻删除。