2

我一直在不知疲倦地寻找解决问题的方法,但没有发现任何有用的东西!!所以我希望这里有人可以帮助我的具体情况......提前谢谢!

所以,我有一个条形码扫描仪,可以将库存作为文本文件存储在其内部存储器中。通过使用 Windows Mobile Device Center 6.1,我可以在我的 PC 上浏览扫描仪文件夹并打开该文本文件以查看我扫描的项目。

我正在编写一个 excel 宏,它将打开该文本文件,读取每一行库存,然后用它做其他事情。如果我将扫描仪上的文本文件复制到“我的文档”之类的地方,那么到目前为止我已经成功了。但是,我想让它变得简单,并且能够直接从扫描仪打开该文本文件。

我的问题是引用扫描仪的路径。因为它是便携式设备,所以它没有像 C: 这样的驱动器。相反,路径看起来像“Computer\MT2070-ML416147\Application\Inventory\export.txt”。但是,当我尝试打开该路径进行输入时,我收到一条错误消息“找不到路径”。

如果有人可以提供帮助,我将非常感激!如果有人需要我所拥有的代码片段,请告诉我。

4

2 回答 2

3

无法通过 Windows 文件系统 API 访问附加的 Windows CE 设备文件系统的内容,这是因为它们不是已安装的卷。您的设备出现在 Windows 资源管理器中是因为 WMDC 安装了一个 Shell 命名空间处理程序,该处理程序创建了代表附加设备的 shell 文件夹 - 这与控制面板和网上邻居文件夹的工作方式相同,即使它们也不是真正的文件系统目录。可以把它想象成 Windows 在文件系统抽象上挥手致意。

一切都不会丢失,但是,您有几个选择:

  1. 使用智能设备连接 API 探索设备并从中获取数据文件:https ://msdn.microsoft.com/en-us/library/bb384093.aspx - 这是资源管理器在显示时使用的相同 API你壳设备的文件夹。
  2. 从设备中取出存储卷(例如 SD 卡)并将其插入计算机上的 SD 读卡器,以便您可以直接浏览和操作文件系统。
  3. 编写一个在设备本身上运行的程序,将数据从设备推送到共享位置。

选项 1 将为您带来最佳结果,但可能需要在 C++/Win32 中对其进行编码。VBA 不是进行系统编程的最佳环境。您始终可以使用 C++ 编写并将您的层公开为 COM 对象,然后您可以通过 VBA 使用该对象。尽管您会遇到 32/64 位 Office 的问题,并且可能还会遇到沙盒问题。

选项 3 会有点困难,因为最后一个用于“Windows Mobile”风格的 Windows CE 的 SDK 是为 Visual Studio 2008 发布的——不支持更新版本的 VS。这意味着针对 WinCE API 使用贫血的 Compact Framework 3.5 或 C++03。巧合的是,我相信这也是iPhone问世时Windows Mobile注定失败的部分原因:环境太被忽视了,后面跟不上。

于 2016-08-30T02:03:43.787 回答
0

检查您的设备是否可以通过Shell.ApplicationActiveX 访问。下面是显示“打印机和传真”位置中所有项目的示例:

Sub Test()

    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.Namespace("::{2227a280-3aea-1069-a2de-08002b30309d}") ' Printers and Faxes

    Debug.Print "CLSID:" & vbCrLf & objFolder.Self.Path & vbCrLf
    Debug.Print "Folder name: " & vbCrLf & objFolder.Self.Name & vbCrLf
    For Each objItem In objFolder.Items()
        Debug.Print objItem.Name
    Next

End Sub

我的输出如下:

CLSID:
::{2227A280-3AEA-1069-A2DE-08002B30309D}

文件夹名称:
打印机

传真
Microsoft XPS 文档编写器
PDFCreator
发送到 OneNote 2013
...-P0086 on ...-s0002
...-P0087 on ...- s0002
...-P0049 on ...-S0002
...-P0068 on ...-S0002
...-P0067 on ...-S0002

尝试其他 CLSID,例如:

::{20D04FE0-3AEA-1069-A2D8-08002B30309D} - Computer
::{00f2886f-cd64-4fc9-8ec5-30ef6cdbe8c3} - Scanners and Cameras
::{fb0c9c8a-6c50-11d1-9f1d-0000f8757fcd} - Scanners and Cameras
::{e211b736-43fd-11d1-9efb-0000f8757fcd} - Scanners and Cameras
::{0c15d503-d017-47ce-9016-7b3f978721cc} - Portable Device Values
::{35786d3c-b075-49b9-88dd-029876e11c01} - Portable Devices

看看这里这里这里。如果您在显示的项目之一中找到设备名称,那么您显然可以从中检索文件。

于 2016-08-30T09:18:02.577 回答