Я реализовал передачу файлов с ПК с Windows на Android-устройство, которое подключено по MTP к компьютеру. Реализация копирования готова (я использовал этот пример: http://code.msdn.microsoft.com/windowsdesktop/Portable-Devices-COM-API-fd4a5f7d).
Теперь я хотел бы улучшить пользовательский интерфейс, я хотел бы предложить диалог выбора папки, где пользователь может выбрать папку устройства MTP, где я сохраню файл (CLSID_FileOpenDialog с FOS_PICKFOLDERS работает хорошо). Обратите внимание, что простое диалоговое окно сохранения файла не работает, потому что вы получите сообщение об ошибке: «Вы не можете сохранить здесь».
Результат просмотра папок будет примерно таким:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\?\usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f9ff3391d4\ -{10001,SECZ9519043CHOHB,12635222016}{01B8016B-0164-00F2-E100-55012C014001}
usb#vid_04e8&pid_6860&mi_00#6&2296b879&0&0000#{6ac27878-a6fa-4155-ba85-f98f491d4f33}
Я знаю, что это устройство, IPortableDeviceManager использует его как идентификатор устройства.
SID-{10001,SECZ9519043CHOHB,12635222016}\{01B8016B-0164-00F2-E100-55012C014001}
Это путь на устройстве. Эти идентификаторы GUID являются свойством WPD_OBJECT_PERSISTENT_UNIQUE_ID объектов устройств.
С этой информацией я могу выбрать устройство и найти папку на устройстве, чтобы я мог сделать копию.
Моя проблема в том, что я также хотел бы выбрать каталог по умолчанию в моем диалоговом окне просмотра папок на устройстве, и я не могу создать указанный выше путь. Обратите внимание, если я укажу это как путь по умолчанию, он начнет просмотр в правильной папке.
Проблемной частью является начальный GUID, который я не могу получить:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Я также заглянул в реестр. Я нашел этот GUID только в одной записи:
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 построить весь путь по умолчанию?