我实现了从Windows PC到Android设备的文件传输,该设备与MTP连接到计算机.复制实现已准备就绪(我使用了此示例:). 现在,我想改进UI,我想提供一个文件夹选择对话框,用户可以在其中选择一个MTP设备文件夹,我将在其中保存文件(clsid_fileopendialog,with fos_pickfolders效果很好).请注意,简单的文件保存对话框不起作用,因为您将从对话框中获得错误:"您无法在这里保存". 文件夹浏览的结果与此相似: :: {20D04FE0-3AEA-1069-A2D8-08002B30309D} \\?\ usb#vid_04e8&pid_6860&mi_00#6&2296b879&0000# {10001,SECZ9519043CHOHB,12635222016} {01B8016B-0164-00F2 -E100-55012C014001} USB#VID_04E8&PID_6860&MI_00#6&2296B879&0&000
以下是关于 wpd 的编程技术问答
我试图从Java签名的小程序中读取便携式设备. 我在 http://code.google.com/p/jmtp/w/list 要访问便携式设备,但是当我在Netbeans中运行它时,会出现错误 Exception in thread "main" java.lang.UnsatisfiedLinkError: no jmtp in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1860) at java.lang.Runtime.loadLibrary0(Runtime.java:845) at java.lang.System.loadLibrary(System.java:1084) at jmtp.PortableDeviceManagerImplWin32.(PortableDeviceManagerImpl
我正在尝试确定Delphi中的WPD设备是哪种类型. 在我的应用程序中,我需要知道该设备是手机还是相机还是它是什么. 根据然后根据我找到了WPD_DEVICE_TYPE的GUID和UINique ID WPD_DEVICE_TYPE_FMTID : TGuid = '{26D4979A-E643-4626-9E2B-736DC0C92FDC}'; WPD_DEVICE_TYPE_PID = 15; 我的问题是我正在弄清楚如何检索信息. 我期望IPortableDevice就像IPortableDeviceContent一样,.Property的过程,但事实并非如此. 但是,IPortableDeviceManager确实有一个称为GetDeviceProperty的过程. 我有示例代码,该代码可以获取WPD设备的友好名称(来自单元portabledeviceapilib_tlb.pas). 代码: function GetDeviceFri
我希望获得一些有关实现一个看似简单的目标的一般指导.我有一个数码单反相机(佳能EOS 50D),需要编写一个应用程序,该应用程序告诉相机拍照.我还需要将图片转移到计算机上,并可能将其从相机的存储空间中删除.奖励是在我的应用程序中获取来自相机的实时预览.我的环境将是Windows(XP Pro或Vista Enterprise)和.NET 3.5(C#). 我做了一些研究,发现了一些选择.我知道会工作的人,但是将来只能使用佳能摄像机.我已经从佳能找到并下载了SDK,该SDK提供了许多此功能.我已经查看了SDK,虽然它很广泛并用C编写,但确实有C#包装器可以加快开发的速度. 我发现的另一个选项称为Windows Portable设备.显然,这是一个API,它将与实现PTP和MTP标准的设备进行对话.它是基于com的,据我所知,它没有.NET包装器.但是,这不是表演阻止者.我可以/调用我需要的功能或编写托管的C ++ DLL以与相机交谈. 我正在寻找拥有WPD经验的人,以给我
我正在使用Windows Portable设备API访问某些MTP设备.我想阅读设备的供应商扩展属性,它应该看起来像这样: " microsoft.com/wpdna"或" microsoft.com/mtpz" 看来这应该是一项非常简单的任务,但我无法弄清楚. 我已经能够在设备上枚举对象并传输文件,依此类推. dd389001(v = vs.85).aspx" rel =" nofollow"> wpdapisample应用程序. 我还找到了本文我认为我想做的是.但是我不明白如何创建这些查询. 解决方案 没有进入代码,简短的答案是扫描一系列PID,以查看其中有哪些数据.这是一次调试练习,仅用于发现目的.我基本上只是写一个循环:例如,如果我想在基本的扩展属性下扫描前16个PID,您将使用WPD_PROPERTIES_MTP_VENDOR_EXTENDED_DEVICE_PROPS作为格式化,然后以PID在每次迭代上更改它,并通过扫描值0xD101通过0xD
我正在寻找通过Windows API来检测MTP设备,而不仅仅是已经连接的设备的枚举. 解决方案 开始,请考虑查看: 套件和下载 Portable Engection com api com api sampe 其他解决方案 那将是其他解决方案 详细说明MSALTER的答案,您可能会得到此问题的答案 - c ++ win32不接收dbt_devicearrival或dbt_deviceremovecomplete on wm_devicechange 基本摘要如下: 在处理WM_CREATE消息时,请致电RegisterDeviceNotification,要么通过USB类GUID进行过滤为第二个参数,要么将DEVICE_NOTIFY_ALL_INTERFACE_CLASSES作为第三个参数,可与所有USB设备类使用 在处理WM_DEVICECHANGE消息时,将消息的lParam字段投放到PDEV_BROADCAST_HDR struct,如果其
我是C#的新手,必须在C#中开发Windows Form应用程序.此应用程序应跟踪以下内容. 监视CD/DVD驱动外部和内部. 监视在CD/DVD驱动器上创建,修改和删除的文件. 我能够通过RegisterNotification插入CD/DVD驱动器的系统通知,并通过跟踪WM_DEVICECHANGE WM_DEVICECHANGE MEDATION中的消息. 上面的实现让我知道何时将新设备连接到PC上. 我面临的问题是跟踪CD/DVD上发生的文件更改(写入/修改).一种选择是对CD/DVD中的文件进行轮询为背景作业.但是,这将是最后一个选择. 我找到了IMAPI,我们可以写入CD/DVD,但我只需要监视文件更改以审核目的. 请指出正确的方向,即如何接收我程序中的CD/DVD通知的文件更改? 我尝试过FileSystemWatcher,但似乎与CD/DVD驱动器不起作用. 更新于2018年77-FEB-2018: 我能找到的另一种
我正在尝试使用Windows Portable设备API和此API提供的ProtableDeviceManager列举Windows上的可移植设备. 我已经在MSDN文档之后实施了设备ID的枚举这是我正在使用的C#代码的片段: PortableDeviceManagerClass deviceManager = new PortableDeviceManagerClass(); deviceManager.RefreshDeviceList(); uint numberOfDevices = 1; deviceManager.GetDevices(null, ref numberOfDevices); if (numberOfDevices == 0) { return new string[0]; } string [] deviceIds = new string[numberOfDevices]; deviceManager.G
我已经与WPD API合作了一段时间,我似乎在问题后遇到问题. 我解决了一个问题后,其他问题就会弹出.但是,嘿,那是生活. 我一直在尝试确定WPD设备是存储设备还是电话或其他. 事实证明,诸如iPhone之类的设备未被设置为手机,而是将其视为WPD_DEVICE_TYPE的通用设备. 但是,它以存储设备的形式呈现给Windows. 连接外部硬盘,SD存储卡读取器和其他更常规的存储设备时,也会被WPD API识别,但是EHY也可以在Windows中获得专用的安装点. 如果我连接外部硬盘驱动器,它将具有一个功能类别对象,该对象的值将是该驱动器的路径,例如E:. 很好.太好了! 所以我的问题是:我如何以某种方式阅读WPD设备是否具有安装点? 确保功能对象表示它具有一个,但是是否有可能有一个指标值指出可用的坐骑点? 解决方案 检查设备ID,这是一个示例它们的不同之处: \\?\ swd#wpdbusenum #_ ?? _ usbstor
我使用shbrowseforfolder()在MTP设备上选择一个文件夹.然后,我想从/到那里复制文件. Iportabledevicecontent接口(来自Windows Portable设备SDK)似乎合适,但是如何使用PIDL将其获取,从Shbrowseforfolder()返回? (我问了有关获得IWMDMStorageControl接口的类似问题: 如何获得给定的PIDL ) 解决方案 我们可以以这种方式获得与shbrowseforfolder()相关的显示名称: TCHAR DisplayName[MAX_PATH]; // we will get it here LPITEMIDLIST pidlSelected = SHBrowseForFolder( &bi ); if ( pidlSelected && ! SHGetPathFromIDList(pidlSelected, DisplayName) ) { // it is media devi
我的Android应用程序会生成一些我需要与我的主PC程序同步的文件,而另一种方式.我这样做的常见方法是使用一个FTP帐户,在该帐户中,我的Android应用程序和我的PC程序都获得了最新版本的文件,这很好.我的一些客户在其Android设备上没有互联网访问,因此必须通过使用USB电缆连接到PC来与我的程序同步.为此,我在PC程序中有一个例程,该程序将在Android设备上指定的文件夹上同步文件.问题在于,仅当可以将Android设备安装为驱动器时,该方法才能起作用,从而通过Windows分配了驱动器字母. 某些设备,尤其是运行蜂窝的平板电脑(我已经在三星Galaxy 10.1 Tab和Lenovo ThinkPad平板电脑上体验了),而不会以驱动器的形式安装,而是将其连接为Windows Portable设备(WPD).在这种情况下,我无法从程序(用Delphi编写)访问该设备,因此我对文件进行同步的例程不起作用. 我的例程必须知道文件夹的特定位置以同步到工作,因此,如果我
我用USB电缆连接三星Galaxy Android平板电脑到运行Windows 7.它使用MTP连接. 步骤1.通过Windows Explorer将My SQLite数据库从Windows 7复制到平板电脑. 步骤2.在平板电脑上打开它(添加Android_metadata表),然后关闭它. 步骤3.将SQLite数据库复制回Windows. 步骤4.使用sqlite3.exe检查它.它腐败了. 现在另一个测试. 步骤1.通过Windows Explorer将我的SQLite数据库从Windows 7复制到平板电脑 步骤2.断开连接然后重新连接USB电缆. 步骤3.在平板电脑上打开它(添加Android_Metadata表),然后关闭它. 步骤3.将SQLite数据库复制回Windows. 步骤4.使用sqlite3.exe检查它.它并不腐败. 有趣的是,如果我切换步骤2和3,它也有效. 由于它在我断开连接并重新连接USB电缆时,我猜测我需要
我有一个桌面 Java 应用程序,还有一个 Android 应用程序.两个应用协同工作. 桌面应用程序中的用户有一个按钮可以启动设备数据应用程序与计算机应用程序之间的传输,反之亦然. 所以我需要使用简单的 USB 电缆传输数据,并且没有互联网连接/WiFi/蓝牙/adb. 我找到了两个适用于 Windows 的 Java MTP 库来解决我的问题,以及 android 的 USB 主机/附件功能: jMTP 成功识别我的 Android 设备、文件夹和其他东西 我已成功在计算机 ---> 设备中传输文件,但是当我尝试在设备 ---> 计算机中传输文件时出现错误 我把代码放在解释之后. jusbpmp 但我无法传输设备---> 计算机. USB 主机/附件 没有用,因为传输是从桌面应用程序启动的,当我在 android 开发人员指南网站上阅读时,它似乎与我需要的不符,或者也许如果用户开始从设备传输. 我尝试从 1 周开始完成这项任务,但
我正在尝试使用此代码段将内容传输到便携式设备 IPortableDeviceValues values = GetRequiredPropertiesForContentType(fileName, parentObjectId); IStream tempStream; uint optimalTransferSizeBytes = 0; content.CreateObjectWithPropertiesAndData( values, out tempStream, ref optimalTransferSizeBytes, null); System.Runtime.InteropServices.ComTypes.IStream targetStream = (
有一个 powershell 脚本可以通过 MTP 以编程方式在 pc 和 android 之间复制文件,请参阅 access-file-system-against-mtp-connection,它在powershell控制台下运行时有效,然后我编写了如下脚本: function Usage() { echo "Usage:mtpcmd cp srcfile dstfolder" } function main { param($mainargs) # echo "args2:$mainargs" if(-not($mainargs.length -eq 2)) { Usage return } $srcfile=$mainargs[0] $dstfolder=$mainargs[1] $phone = Get-ChildShellItem | where { $_.Path -l
WPD 在 Windows XP(SP1,如果这很重要),即使 微软声明确实如此. WPD 问题: IPortableDeviceManager.GetDevices 调用在 Win XP 上找不到任何设备,而在 Windows 7 上找到所有连接的摄像头. 其他一些人在 WPD 无法在 XP 上运行时遇到了同样的问题,没有解决方案:12 我决定使用 WIA 重新实现该功能. WIA 自动化/WIA 接口问题: WIA automation 在与相机交互时只提供愚蠢的对话框 - 我需要从代码中做到这一点 建议针对 WIA interfaces 进行编程以使用 WIA 实现较低级别的任务.我还没有找到任何如何使用 C# 中的 WIA 接口的示例(还发现一些迹象表明这根本不可能,或者至少 非常难做) 因此我查看了 WIA 2.0(wiaaut.dll 的包装器): 我第一次收到 HRESULT 0x80210006 (WIA_ERROR_BU
是否有任何可用于VB.NET的库可以使我轻松访问MTP设备?我希望能够找出连接了哪些设备,列出它们的内容并从中复制文件. 到目前为止,我看到的所有内容(在堆栈溢出,Microsoft网站上或使用简单的Google搜索)都在C ++,C#或其他不是VB.NET的语言中. Microsoft文档完全落在我的头上. 结果,除非我打算学习新语言,否则这都是不开始的. 我确实找到了 mtpsharp ,这给了我希望.但是没有文档,它似乎没有完全实施,我试图做某些事情返回例外的尝试,作者告诉我,它是针对我不应该使用的旧API,无法帮助我的我有问题. 想要使用vb.net的人真的没有希望? 解决方案 窗口便携式设备类lib 注意:这是 Christophe Geers 的作品,这些博客可以在这里找到 我主要添加了一些功能,一个VB控制台测试,并将其转换为类LIB.我对代码中的一些内容进行了调整以简化它,但不值得进一步提及. 文档: 研究 Visu
我一直在不知疲倦地寻找解决问题的方法,但没有找到任何有用的方法!!所以我希望这里有人可以帮助我的具体情况......提前谢谢! 所以,我有一个条形码扫描仪,可以将库存作为文本文件存储在其内部存储器中.通过使用 Windows Mobile Device Center 6.1,我可以在我的 PC 上浏览扫描仪文件夹并打开该文本文件以查看我扫描的项目. 我正在编写一个 Excel 宏,它将打开该文本文件,读取每一行库存,然后用它做其他事情.如果我将扫描仪上的文本文件复制到“我的文档"之类的地方,那么到目前为止我已经成功了.但是,我想让它变得简单,并且能够直接从扫描仪打开该文本文件. 我的问题是引用扫描仪的路径.因为它是便携式设备,所以它没有像 C: 这样的驱动器.相反,路径看起来像“Computer\MT2070-ML416147\Application\Inventory\export.txt".但是,当我尝试打开该路径进行输入时,我收到一条错误消息“找不到路径".
我正在向当前使用 Windows 图像采集 (WIA) 的应用添加 Windows 便携式设备 (WPD) 支持.WIA 通过 IWiaItem::DeviceDlg 提供了一个方便的图片选择对话框. 我找不到 WPD 等价物.有没有,如果没有,允许用户选择项目的首选技术是什么?我不必编写自己的对话,对吗? 解决方案 MS回复: [T]这里没有用于图片选择的专用对话框(WIA 之外).相反,您应该使用支持 WPD 设备导航的常规文件打开对话框.需要做一些魔术才能在设备内的正确文件夹中启动对话框.您可能必须编写代码才能找到包含图片的文件夹. 传递给“文件打开"对话框的神奇路径是:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ 设备实例 ID 可以通过 SetupApi 调用 (SetupDi*) 从 PnP 设备路径派生. 此外,上述路径可以包含其他路径元素,以标识设备上的特定文件夹.这些对于每个设
我正在开发一个在Windows上运行的PC c ++应用程序。应用程序应与使用MTP通过USB连接的Android手机通信。 idée是不安装存储卡。我发现是Windows有他们称为支持MTP的WPD(Windows便携式设备)。它看起来很可靠,但它要求安装WMP11。我想知道: 有没有其他替代品库可以使用? 任何人有任何使用WPD的提示或经验吗? 是否有任何“精简”依赖关系可以安装,而不是WMP11 for xp? 任何帮助将非常感激。 解决方案 我有这个问题的答案吗? /精简图书馆? 您可以使用WIA,但只能用于图片。 任何提示? 查看由Microsoft提供的示例代码,这是一个很好的起点。我发现它正在MSDN上搜索便携式设备COM API示例 对于服务,您可以查看此示例代码。我通过搜索wpdServicesApiSample $ b发现了 WPD api可以使用。 并非所有设备都支持MTP,有些设备仅支持部分。这导致我有一些问题,