Tag: wpd

使用WPD(Windows便携设备)Apis传输图像文件时出错

我一直在尝试使用WPD Apis在c#中编写一个示例应用程序,用于将图像文件传输到连接的WPD支持的设备。 我一直关注这个链接。 我的问题是每次我尝试传输文件时我都会收到错误:值不在预期范围内。 有没有人试过成功做同样的事情。 任何指针都非常感谢。 下面是我面临错误的代码片段 IPortableDeviceContent content; this._device.Content(out content); IPortableDeviceValues values = GetRequiredPropertiesForContentType(fileName, parentObjectId); PortableDeviceApiLib.IStream tempStream; uint optimalTransferSizeBytes = 0; content.CreateObjectWithPropertiesAndData( values, out tempStream, ref optimalTransferSizeBytes, null); System.Runtime.InteropServices.ComTypes.IStream targetStream = (System.Runtime.InteropServices.ComTypes.IStream) tempStream; try { using (var sourceStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var buffer = new byte[optimalTransferSizeBytes]; int bytesRead; do { bytesRead […]

使用WPD将文件复制到Windows Phone C#

我想通过MTP将至少一个文件复制到Windows手机。 按照本教程,我能够连接到手机并将文件从手机复制到计算机: WPD:传输内容但是我无法以相反的方式复制文件(从计算机到手机)。 这是我的代码: IPortableDeviceContent content; this._device.Content(out content); IPortableDeviceValues values = GetRequiredPropertiesForContentType(fileName, parentObjectId); PortableDeviceApiLib.IStream tempStream; uint optimalTransferSizeBytes = 0; content.CreateObjectWithPropertiesAndData( values, out tempStream, ref optimalTransferSizeBytes, null); System.Runtime.InteropServices.ComTypes.IStream targetStream = (System.Runtime.InteropServices.ComTypes.IStream)tempStream; try { using (var sourceStream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { var buffer = new byte[optimalTransferSizeBytes]; int bytesRead; do { bytesRead = sourceStream.Read(buffer, 0, (int)optimalTransferSizeBytes); […]

从Windows C#Canon SDK与PTP或MTP对齐图片

我希望得到一些关于实现看似简单目标的一般指导。 我有一个数码单反相机(佳能EOS 50D),需要编写一个应用程序,告诉相机拍照。 我还需要将图片传输到计算机,并可能将其从相机的存储中删除。 奖励是在我的应用程序中从相机获得实时预览。 我的环境将是Windows(XP Pro或Vista Enterprise)和.Net 3.5(C#)。 我做了一些研究,发现了一些选择。 我知道的一个会起作用,但限制我将来只使用佳能相机。 我发现并从佳能下载了一个SDK,它提供了很多这方面的function。 我查看了SDK,虽然它很广泛并且用C语言编写,但它确实有C#包装器,可以加快开发速度。 我发现的另一个选项叫做Windows便携设备。 显然,它是一个API,可以与实现PTP和MTP标准的设备进行通信。 它是基于COM的,据我所知,它没有.Net包装器。 然而,这不是一个节目限制。 我可以P / Invoke我需要的function或写一个托管C ++ DLL在我的应用程序中使用与相机交谈。 我正在寻找有WPD经验的人给我指点。 我仔细阅读了文档,并看到了传输图像和删除图像的参考。 但是,我没有看到提及拍照,获取预览图像或说焦点/自动对焦的命令。

在C#中枚举Windows便携设备

我试图使用Windows Portable Devices API和此API提供的PortableDeviceManager在Windows上枚举连接的便携式设备。 我已经在MSDN文档链接和各种博客链接之后实现了设备ID的枚举,但它们都导致了同样的问题 – 我只能在有多个连接时给我一个设备的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.GetDevices(ref deviceIds[0], ref numberOfDevices); return deviceIds; 我有两台设备连接到我的电脑,一台可拆卸USB记忆棒和一台数码相机。 当两者都处于活动状态时,将仅返回我的相机的设备ID。 当我取消激活相机时,将返回可移动USB记忆棒的设备ID。 是否有任何有这种API经验的人可以指出我做错的方向?