2008-11-06 8 views
11

Chciałbym napisać aplikację, która skopiuje pliki MP3 do SanDisk Sansa M240. SanDisk nie ma litery dysku i używa MTP do przesyłania plików. Natknąłem się na próbkę podłączenia do urządzenia pod adresem: http://blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspxZapisywanie plików na urządzeniu WPD przez MTP C#/VB.net

, ale po podłączeniu nie mogę wymyślić, jak skopiować pliki/utworzyć foldery na urządzeniu.

Jestem bardzo zaskoczony, że nie ma żadnych wrapperów .Net dla tej biblioteki COM.

Odpowiedz

3

Aby przesłać pliki przez MTP z C#:

  1. Pobierz ten pakiet Nuget: PortableDevices

  2. Dodaj odniesień do tych bibliotek 4 COM:

    • PortableDeviceClassExtension
    • PortableDeviceConnectApi
    • PortableDeviceTypes
    • PortableDeviceApi
  3. podejmuje dll pod obj\Debug i umieścić je w bin\Debug:

    • Interop.PortableDeviceClassExtension.dll
    • Interop.PortableDeviceConnectApiLib.dll
    • Interop.PortableDeviceTypesLib.dll
    • Interop.PortableDeviceApiLib.dll

Teraz można użyć następująca funkcja do listy wszystkich urządzeń, chociaż wydaje się, że FriendlyName pracy (zwraca pusty ciąg znaków):

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; 
    } 

Następnym krokiem jest uzyskanie zawartości z urządzenia, które odbywa się w taki sposób:

var contents = device.GetContents(); 
Powiązane problemy