2

私は自分の問題の解決策を精力的に探してきましたが、役立つものは何も見つかりませんでした!! ここにいる誰かが私の特定の状況を助けてくれることを願っています...よろしくお願いします!

そのため、在庫をテキスト ファイルとして内部メモリに保存するバーコード スキャナがあります。Windows Mobile デバイス センター 6.1 を使用することで、PC でスキャナ フォルダをナビゲートし、そのテキスト ファイルを開いて、スキャンしたアイテムを確認することができます。

そのテキスト ファイルを開き、在庫の各行を読み取り、それを使用して他のことを行う Excel マクロを作成しています。そのテキスト ファイルをスキャナーで「マイ ドキュメント」などの場所にコピーすると、これまでのところ成功しています。ただし、簡単にして、そのテキスト ファイルをスキャナーから直接開くことができるようにしたいと考えています。

私の問題は、スキャナーへのパスを参照することです。ポータブルデバイスなので、C: などのドライブはありません。代わりに、パスは「Computer\MT2070-ML416147\Application\Inventory\export.txt」のようになります。ただし、入力用にそのパスを開こうとすると、「パスが見つかりません」というエラーが表示されます。

誰かが助けてくれるなら、私はとても感謝しています!! 私が持っているもののコード スニペットが必要な場合は、お知らせください。

4

2 に答える 2

3

マウントされたボリュームではないため、接続された Windows CE デバイスのファイル システムの内容に Windows ファイル システム API を介してアクセスする方法はありません。接続されたデバイスを表すシェル フォルダーを作成するシェル名前空間ハンドラーが WMDC によってインストールされるため、デバイスが Windows エクスプローラーに表示されます。これは、実際のファイル システム ディレクトリではありませんが、コントロール パネルとネットワーク プレース フォルダーが機能するのと同じ方法です。これは、ファイルシステムの抽象化を Windows が手を振るようなものだと考えてください。

すべてが失われるわけではありませんが、いくつかのオプションがあります。

  1. Smart Device Connectivity API を使用してデバイスを探索し、デバイスからデータ ファイルを取得します: https://msdn.microsoft.com/en-us/library/bb384093.aspx - これは、エクスプローラーが表示するときに使用している API と同じですデバイスのシェル フォルダ。
  2. デバイスからストレージ ボリューム (SD カードなど) を取り外し、コンピューターの SD カード リーダーに接続して、ファイル システムを直接参照および操作できるようにします。
  3. デバイスから共有の場所にデータをプッシュするために、デバイス自体で実行されるプログラムを作成します。

オプション 1 で最良の結果が得られますが、C++/Win32 でのコーディングが必要になる可能性があります。VBA は、システム プログラミングを行うのに最適な環境ではありません。いつでも C++ で記述し、層を COM オブジェクトとして公開してから、VBA を介して使用できます。ただし、Office の 32/64 ビットで問題が発生し、サンドボックスの問題も発生する可能性があります。

オプション 3 は、Windows CE の「Windows Mobile」フレーバーの最後の SDK が Visual Studio 2008 用にリリースされたため、少し難しくなります。VS のより新しいバージョンはサポートされていません。これは、WinCE API に対して貧弱な Compact Framework 3.5 または C++03 を使用することを意味します。偶然にも、これが iPhone が登場したときに Windows Mobile が運命づけられた理由の 1 つだと思います。

于 2016-08-30T02:03:43.787 に答える
0

Shell.ApplicationデバイスがActiveX経由でアクセスできるかどうかを確認します。以下は、「プリンターと FAX」の場所にあるすべてのアイテムを表示する例です。

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}

フォルダー名:
Printers

Fax
Microsoft XPS Document Writer
PDFCreator
Send To 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 に答える