gpt4 book ai didi

android - WPD/MTP 可移植设备,内容始终为空(Windows、VisualStudio 2012、VB.NET)

转载 作者:行者123 更新时间:2023-11-30 04:54:03 25 4
gpt4 key购买 nike

问题已使用 NuGet 包 PortableDevices 进行测试,解决方案来自此处:Accessing an MTP device in Visual Basic .NET

我想从三星 Android 平板电脑获取文件列表。我可以连接,但 GetContents() 不返回任何文件 (root.Files.Count = 0)。提前致谢。

Dim Devices As New PortableDeviceCollection()
Devices.Refresh()
Dim tablet As PortableDevice
tablet = Devices.First()
tablet.Connect()
Dim root = tablet.GetContents()

最佳答案

对我来说,问题已经解决了。首先,让我解释一下效果:在我的 windows 10 设备管理器的可移植设备列表中,有 4 个来自读卡器的设备和插入位置 2 的三星平板电脑。Interop.PortableDeviceApiLib.dll 无法检索更多设备此处描述的设备:Enumerating Windows Portable Devices in C#对于这个问题,GetDevices() 只返回一个设备,在我的例子中是来自 Card Reader 的最后一个没有文件的设备。当连接另一个设备(另一部智能手机)时,它成为最后一个设备并且代码(Windows Portable Devices.zip 来自 Accessing an MTP device in Visual Basic .NET)工作正常。

解决方案:我按照已接受的答案 (Enumerating Windows Portable Devices in C#) 中的解释修复了互操作程序集中的编码问题,并将新的互操作 dll 复制到所有现有的 Interop.PortableDeviceApiLib.dll 上(在引用文献中将嵌入的互操作类型设置为 False) .PortableDeviceCollection.cs 中的代码(压缩包来自这里:Accessing an MTP device in Visual Basic .NET)我已经更改如下:

public void Refresh()
{
this._deviceManager.RefreshDeviceList();

// Determine how many WPD devices are connected
// new, according to https://learn.microsoft.com/en-us/windows/win32/wpd_sdk/enumerating-devices
uint count = 1;
string[] s = null;
this._deviceManager.GetDevices(s, ref count);


// Retrieve the device id for each connected device
var deviceIds = new string[count];
// old: this._deviceManager.GetDevices(ref deviceIds[0], ref count);
this._deviceManager.GetDevices(deviceIds, ref count);
foreach(var deviceId in deviceIds)
{
Add(new PortableDevice(deviceId));
}
}

不幸的是,Interop.PortableDeviceApiLib.dlls 必须在 Visual Studio 中每次清理后替换为新创建的 dll。编辑:在文章中Andrew Trevarrow,Fun with MTP in C# ( http://andrewt.com/2013/06/15/fun-with-mtp-in-c.html ) 是一个防止此问题的提示:完成所有操作后,从 C# 项目“PortableDevices”中删除对 PortableDeviceApiLib 类型库的引用,并添加对新 Interop.PortableDeviceApiLib 的引用。 dll(在单独的文件夹中)并将 dll 的“嵌入互操作类型”更改为 False。

关于android - WPD/MTP 可移植设备,内容始终为空(Windows、VisualStudio 2012、VB.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59514676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com