MTP C#/ VB.netを介してWPDデバイスにファイルを書き込む
質問
MP3ファイルをSanDisk Sansa M240にコピーするアプリケーションを作成したいと思います。 SanDiskにはドライブ文字がなく、ファイル転送にMTPを使用します。 httpで、デバイスに接続するサンプルを見つけました。 //blogs.msdn.com/dimeby8/archive/2006/09/27/774259.aspx
しかし、一度接続すると、実際にファイルをコピーしたり、デバイスにフォルダーを作成する方法がわかりません。
このCOMライブラリ用の.Netラッパーがないことに非常に驚いた。
解決
dimeby8がデータ転送を処理するコードを投稿したようです。特に彼のブログの他の投稿をチェックしてください:
他のヒント
c#でMTPを介してファイルを転送するには:
-
このNuGetパッケージをダウンロードします: PortableDevices
-
これら4つのCOMライブラリへの参照を追加します。
- PortableDeviceClassExtension
- PortableDeviceConnectApi
- PortableDeviceTypes
- PortableDeviceApi
-
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();
所属していません StackOverflow