質問

MP3ファイルをSanDisk Sansa M240にコピーするアプリケーションを作成したいと思います。 SanDiskにはドライブ文字がなく、ファイル転送にMTPを使用します。 httpで、デバイスに接続するサンプルを見つけました。 //blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx

しかし、一度接続すると、実際にファイルをコピーしたり、デバイスにフォルダーを作成する方法がわかりません。

このCOMライブラリ用の.Netラッパーがないことに非常に驚いた。

役に立ちましたか?

解決

dimeby8がデータ転送を処理するコードを投稿したようです。特に彼のブログの他の投稿をチェックしてください:

WPDパート1を介したMTPコマンドの送信

WPDパート2を介したMTPコマンドの送信

WPDパート3を介したMTPコマンドの送信

他のヒント

c#でMTPを介してファイルを転送するには:

  1. このNuGetパッケージをダウンロードします: PortableDevices

  2. これら4つのCOMライブラリへの参照を追加します。

    • PortableDeviceClassExtension
    • PortableDeviceConnectApi
    • PortableDeviceTypes
    • PortableDeviceApi
  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