اكتب الملفات إلى جهاز WPD عبر MTP C#/VB.NET
سؤال
أرغب في كتابة تطبيق يقوم بنسخ ملفات MP3 إلى SanSisk Sansa M240. لا يحتوي Sandisk على خطاب محرك ويستخدم MTP لنقل الملفات. تعثرت من خلال عينة الاتصال بالجهاز على: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
ولكن بمجرد الاتصال ، لا يمكنني معرفة كيفية نسخ الملفات / إنشاء مجلدات على الجهاز.
أنا مندهش جدًا من عدم وجود أغلفة .NET لمكتبة كوم هذه.
المحلول
يبدو أن Dimeby8 نشرت بعض التعليمات البرمجية التي تتولى نقل البيانات. تحقق من المشاركات الأخرى في مدونته ، خاصة:
إرسال أوامر MTP من خلال WPD الجزء 1
نصائح أخرى
لنقل الملفات من خلال MTP مع C#:
قم بتنزيل حزمة Nuget هذه: أجهزة محمولة
أضف إشارات إلى مكتبات COM 4:
- PortableDeviceClasSextension
- PortableDeviceConnectapi
- PortableDeviceTypes
- PortableDevicapi
خذ DLL تحت
obj\Debug
ووضعهم فيbin\Debug
:- interop.portabledeviceClassextension.dll
- interop.portabledeviceConnectapilib.dll
- interop.portabledeviceTypesLib.dll
- interop.portabledeviceapilib.dll
الآن يمكنك استخدام الوظيفة التالية لسرد جميع الأجهزة ، على الرغم من ذلك 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();