我想编写一个将MP3文件复制到SanDisk Sansa M240的应用程序。 SanDisk没有驱动器号并使用MTP进行文件传输。 我偶然发现了连接到设备的示例:http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
但是一旦连接,我就无法弄清楚如何在设备上实际复制文件/创建文件夹。
我很惊讶这个COM库没有任何.Net包装器。
答案 0 :(得分:4)
看起来像dimeby8发布了一些处理数据传输的代码。查看他博客中的其他帖子,特别是:
Sending MTP commands through WPD part 1
答案 1 :(得分:3)
使用c#:
通过MTP传输文件下载此NuGet包:PortableDevices
添加对这4个COM库的引用:
将{d}放在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();