【问题标题】:How do I find out which DVD drive an AutoPlay event is for?如何找出自动播放事件用于哪个 DVD 驱动器?
【发布时间】:2010-12-20 04:07:48
【问题描述】:

我有一个向 COM 注册的用于 DVD 电影的自动播放事件处理程序。

我正在使用 C#,并遵循 CodeProject 中的此指南:http://www.codeproject.com/KB/system/AutoplayDemo.aspx

当插入 DVD 电影时,我在列表中看到我的处理程序并且它确实触发了(我在代码中添加了 Debugger.Break() 以便我可以调试它)

在我的对象中,我实现了 IDropTarget 接口,并调用了我的 Drop 事件。

但是对于 DVD 电影,我无法查询传入的 IDataObject。使用“自动播放枚举 IDList 数组”格式调用 IDataObject.QueryGetData 返回 int 值 1 而不是 S_OK (0)。这似乎不是 QueryGetData 调用定义的输出值之一,让我完全不知所措。

自动播放事件日志 (%SystemRoot%\Autoplay.log) 显示:~0x000006E0~[0312]DVD 电影 -> 无内容自动播放!

这是否意味着我无法得知是哪个 DVD 驱动器启动了该事件?当然大多数系统只有一个,但我仍然想询问正确的设备以获取电影信息!

【问题讨论】:

    标签: .net com autoplay


    【解决方案1】:

    我去检查了 VLC 是如何做到的。他们没有像 codeproject 示例那样使用 COM 对象,而是将其 exe 直接映射到注册表操作。

    然后他们在操作命令行中使用 %1 替换参数,这使 Windows 自动替换自动播放事件所在的驱动器。

    这是一个更简单的 DVD 播放解决方案(假设 codeproject 示例是捕获内容类型检测检查的所有文件,因此它与我需要的目的不完全相同)

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2019-01-06
      • 2017-12-05
      • 2011-02-01
      • 2019-02-07
      • 2010-09-19
      相关资源
      最近更新 更多