一个窗口便携设备类库
注意:这是Christophe Geers的作品,来自一系列博客,可在此处找到
主要是加了几个函数,一个VB控制台测试,转成Class Lib。我在代码中调整了一些东西以简化它,但它们不值得一提。
文档:
研究 Geers 先生的博客。
Visual Studio 的 IntelliSense 在识别可用的属性和方法方面也很有价值。
重要笔记
警告
我的便携式设备很少(而且找不到),所以测试相当有限。
文件和文件夹
在这种情况下,术语File
和Folder
可能具有误导性。
正如文章所阐明的,有一个PortableDeviceObject
类型(类),两者都PortableDeviceFile
继承PortableDeviceFolder
自。 PortableDeviceObject
有一个名为 的属性集合Files
,但该集合实际上包含PortableDeviceObject
s。该集合中的任何一项实际上都可能是另一个文件夹。
我也开始实现一个文件夹集合,然后弄清楚为什么会这样。由于文件夹可以包含子文件夹,因此将文件链接到子文件夹到文件夹到 PortableDevice 会更加混乱和成问题。所以,我离开了它。
这意味着Files
必须测试集合中的每个项目以查看它是否真的是 aFile
或 aFolder
。这通常可以通过以下两种方式之一完成:
' 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
为了让事情变得更简单和更面向对象,我添加了一个IsFile
andIsFolder
函数,PortableDeviceObject
它允许:
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 先生的原始资料
另一个可能有用的 WPD 的C# 项目
当您准备好稍后制作模组时,MSDN Windows Portable Devices 文档可获取更多信息。
一个 VB 控制台应用程序(只是一个翻译)展示了如何使用其中的一些功能。研究博客的详细信息。
代码很长,会在很大程度上复制 Geers 先生的博客,而且我不愿意发布不是我的代码。此外,如果您不能将 C# 代码编译为 DLL,那么显然对您没有什么好处。那么,要回答提出的问题,是否有任何可用于 VB.net 的库可以让我轻松访问 MTP 设备?:
是的。 修改后的源代码、项目文件 (VS2012)、新的 VB 控制台测试应用程序和二进制文件 ( PortableDevices.dll
) 可以从 DropBox 下载。bin/compile 文件夹包括适用于 AnyCPU/Release 和 x86/Release 的 Builds
- 我认为您会希望将
Interop.*
位于这些文件夹中的 DLL 与PortableDevice.DLL
. 例如,将它们与 DLL 一起复制到您的工具目录中。我不知道他为什么那样做。
- 要在项目中使用新的 Class Lib,您显然需要添加对您全新的
PortableDevice.DLL
.
当然,您可以使用项目源文件加载它并重新编译为您想要的任何格式。VS 编译 C# 项目的方式与在 VB 中相同。

适用于我的机器TM
再次声明,这不是我的工作。我主要是编译成DLL。