2

MTPでコンピューターに接続されているWindows PCからAndroidデバイスへのファイル転送を実装しました。コピーの実装の準備ができました (この例を使用しました: http://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d )。

ここで、UI を改善したいと思います。ユーザーがファイルを保存する MTP デバイス フォルダーを選択できるフォルダー選択ダイアログを提供したいと思います (FOS_PICKFOLDERS を使用した CLSID_FileOpenDialog はうまく機能します)。ダイアログから「ここに保存できません」というエラーが表示されるため、単純なファイル保存ダイアログは機能しないことに注意してください。

フォルダ参照の結果は次のようになります:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\?\usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4SID-1{10} ,SECZ9519043CHOHB,12635222016}{01B8016B-0164-00F2-E100-55012C014001}

usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}
これがデバイスであることはわかっています。IPortableDeviceManager はこれをデバイス ID として使用します。

SID-{10001,SECZ9519043CHOHB,12635222016}\{01B8016B-0164-00F2-E100-55012C014001}
これはデバイス上のパスです。これらの GUID は、デバイス オブジェクトの WPD_OBJECT_PERSISTENT_UNIQUE_ID プロパティです。

この情報を使用して、デバイスを選択し、デバイス内のフォルダーを見つけることができるので、コピーを実行できます。

私の問題は、デバイスの folderbrowsedialog でデフォルトのディレクトリも選択したいのですが、上記のパスを作成できないことです。それをデフォルトのパスとして指定すると、正しいフォルダーでブラウジングが開始されることに注意してください。

問題の部分は、取得できない開始 GUID です:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}

レジストリも調べました。この GUID は 1 つのエントリでのみ見つかりました:
HKEY_USERS\S-1-5-21-2044730494-4069800027-1247311059-1000\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ DefaultIcon
の値は次のとおりです:
C:\Windows\System32\imageres.dll,-109
(CLSID サブフォルダーにはさらに多くの GUID が含まれているため、見つけられません。これは正しいものです)

この GUID を取得してデフォルト パス全体を構築する方法を知っていますか?

4

1 に答える 1

2

そのGUIDはComputerフォルダーを表し、MTPデバイスのシェル名前空間拡張はComputerフォルダーデリゲートです。このGUIDを定数として使用して、フォルダーブラウザーの解析名を作成できます。

よろしく、リサ

于 2012-11-19T17:31:28.363 に答える