我想编写一个将 MP3 文件复制到 SanDisk Sansa M240 的应用程序。SanDisk 没有驱动器号,使用 MTP 进行文件传输。我偶然发现了连接到设备的示例:http: //blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
但是一旦连接,我无法弄清楚如何在设备上实际复制文件/创建文件夹。
我很惊讶这个 COM 库没有任何 .Net 包装器。
我想编写一个将 MP3 文件复制到 SanDisk Sansa M240 的应用程序。SanDisk 没有驱动器号,使用 MTP 进行文件传输。我偶然发现了连接到设备的示例:http: //blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
但是一旦连接,我无法弄清楚如何在设备上实际复制文件/创建文件夹。
我很惊讶这个 COM 库没有任何 .Net 包装器。
看起来 dimeby8 发布了一些处理数据传输的代码。查看他博客中的其他帖子,尤其是:
使用 C# 通过 MTP 传输文件:
下载此 NuGet 包:PortableDevices
添加对这 4 个 COM 库的引用:
将dll放在下面obj\Debug
并将它们放入bin\Debug
:
现在您可以使用以下函数列出所有设备,尽管FriendlyName
它似乎不起作用(它返回一个空字符串):
private IDictionary<string, string> GetDeviceIds()
{
var deviceIds = new Dictionary<string, string>();
var devices = new PortableDeviceCollection();
devices.Refresh();
foreach (var device in devices)
{
device.Connect();
deviceIds.Add(device.FriendlyName, device.DeviceId);
Console.WriteLine(@"DeviceId: {0}, FriendlyName: {1}", device.DeviceId, device.FriendlyName);
device.Disconnect();
}
return deviceIds;
}
下一步是从设备中获取内容,操作如下:
var contents = device.GetContents();