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