سؤال

أرغب في كتابة تطبيق يقوم بنسخ ملفات MP3 إلى SanSisk Sansa M240. لا يحتوي Sandisk على خطاب محرك ويستخدم MTP لنقل الملفات. تعثرت من خلال عينة الاتصال بالجهاز على: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx

ولكن بمجرد الاتصال ، لا يمكنني معرفة كيفية نسخ الملفات / إنشاء مجلدات على الجهاز.

أنا مندهش جدًا من عدم وجود أغلفة .NET لمكتبة كوم هذه.

هل كانت مفيدة؟

المحلول

يبدو أن Dimeby8 نشرت بعض التعليمات البرمجية التي تتولى نقل البيانات. تحقق من المشاركات الأخرى في مدونته ، خاصة:

إرسال أوامر MTP من خلال WPD الجزء 1

إرسال أوامر MTP من خلال WPD الجزء 2

إرسال أوامر MTP من خلال WPD الجزء 3

نصائح أخرى

لنقل الملفات من خلال MTP مع C#:

  1. قم بتنزيل حزمة Nuget هذه: أجهزة محمولة

  2. أضف إشارات إلى مكتبات COM 4:

    • PortableDeviceClasSextension
    • PortableDeviceConnectapi
    • PortableDeviceTypes
    • PortableDevicapi
  3. خذ 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top