12

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

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

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

4

2 に答える 2

5

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

WPD パート 1 を介して MTP コマンドを送信する

WPD パート 2 を介して MTP コマンドを送信する

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

于 2008-12-31T15:37:11.357 に答える
2

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();
于 2016-10-02T15:07:46.743 に答える