Frage

Ich möchte eine Anwendung schreiben, die MP3-Dateien auf eine SanDisk Sansa M240 kopiert. Die SanDisk hat keinen Laufwerkbuchstaben und verwendet MTP für die Dateiübertragung. I gestoßen durch die Probe auf die Vorrichtung zum Verbinden unter: http: //blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx

aber einmal angeschlossen ist, kann ich nicht herausfinden, wie man tatsächlich das Kopieren von Dateien / Ordner erstellen auf dem Gerät.

Ich bin sehr überrascht, dass es keine .Net Wrapper für diese COM-Bibliothek.

War es hilfreich?

Lösung

Es sieht aus wie dimeby8 einige Code geschrieben, die Datenübertragungen abwickelt. Überprüfen Sie die anderen Beiträge in seinem Blog, vor allem:

Senden von MTP-Befehle über WPD Teil 1

MTP Senden von Befehlen durch WPD Teil 2

Senden von MTP-Befehle über WPD Teil 3

Andere Tipps

Zur Übertragung von Dateien durch MTP mit c #:

  1. herunterladen NuGet Paket: PortableDevices

  2. Verweise auf diese 4 COM-Bibliotheken hinzufügen:

    • PortableDeviceClassExtension
    • PortableDeviceConnectApi
    • PortableDeviceTypes
    • PortableDeviceApi
  3. Nehmen Sie die DLL unter obj\Debug und steckt sie in bin\Debug:

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

Jetzt können Sie die folgende Funktion verwenden, um alle Geräte aufzulisten, obwohl FriendlyName nicht zu funktionieren scheint (es gibt einen leeren String):

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

Der nächste Schritt ist immer den Inhalt von dem Gerät, das wie getan wird:

var contents = device.GetContents();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top