一个窗口便携设备类库
注意:这是 Christophe Geers 的作品,来自一系列博客,可以是 found here
我主要是加了几个函数,一个VB控制台测试,转成Class Lib。我在代码中调整了一些东西以简化它,但它们不值得一提。
文档:
学习 Mr Geers' blog。
Visual Studio 的 IntelliSense 在识别可用的属性和方法方面也很有价值。
重要提示
警告
我的便携式设备很少(而且找不到),所以测试非常有限。
文件和文件夹
在这种情况下,术语 File 和 Folder 可能会产生误导。
正如文章明确指出的那样,PortableDeviceObject 和 PortableDeviceFolder 都继承自一个 PortableDeviceObject 类型(类)。 PortableDeviceObject 有一个名为Files 的属性集合,但该集合实际上包含PortableDeviceObjects。该集合中的任何一项实际上都可能是另一个文件夹。
我也开始实现 Folders 集合,然后弄清楚为什么会这样。由于文件夹可以包含子文件夹,因此将文件链接到子文件夹到文件夹到 PortableDevice 会更加混乱和成问题。所以,我离开了它。
这意味着必须测试Files 集合中的每个项目,以确定它是否真的是File 或Folder。这通常可以通过以下两种方式之一完成:
' using VB operator
If TypeOf item Is PortableDeviceFolder Then
Console.Beep()
End If
' using NET Type method
If item.GetType Is GetType(PortableDeviceFolder) Then
Console.Beep()
End If
为了让事情稍微更简单,更面向对象,我在PortableDeviceObject 中添加了IsFile 和IsFolder 函数,它允许:
If item.IsFolder Then
DisplayFolderContents(dev, CType(item, PortableDeviceFolder))
End If
还有一个方法可以返回一个ItemType 枚举值(还有一个可能有用的静态版本):
' using GetItemType
If item.GetItemType = PortableDeviceObject.ItemTypes.File Then
Console.Beep()
End If
资源
Geers 先生的original source
Another C# Project 用于 WPD,可能有用
MSDN Windows Portable Devices documentation 在您准备稍后制作模组时获取更多信息。
一个 VB 控制台应用程序(只是一个翻译)展示了如何使用其中的一些功能。研究博客的详细信息。
代码很长,会在很大程度上复制 Geers 先生的博客,而且我不愿意发布不是我的代码。此外,如果您不能将 C# 代码编译为 DLL,那么显然对您没有什么好处。那么,为了回答提出的问题,是否有任何可用于 VB.net 的库可以让我轻松访问 MTP 设备?:
是的。 修改后的源、项目文件 (VS2012)、新的 VB 控制台测试应用程序和二进制文件 (PortableDevices.dll) 可以是 downloaded from DropBox。 bin/compile 文件夹包括适用于 AnyCPU/Release 和 x86/Release 的 Builds
- 我认为您会希望将
Interop.* DLL 保留在带有PortableDevice.DLL 的文件夹中。例如,将它们与 DLL 一起复制到您的工具目录中。我不知道他为什么那样做。
- 要在项目中使用新的 Class Lib,显然需要添加对全新
PortableDevice.DLL 的引用。
当然,您可以使用项目源文件加载它并重新编译为您想要的任何格式。 VS 编译 C# 项目的方式与在 VB 中相同。
在我的机器上工作TM
再次声明,这不是我的工作。我主要是编译成DLL。