2015-11-23 1 views
0

В проводнике Windows вы можете открыть zip-файл, как если бы это была папка. Я хочу убедить Windows Explorer просматривать мой новый тип файла, чтобы люди могли просматривать (и, возможно, открывать) мои «подфайлы» в моем файле типаC++ Как сделать тип файла «открытым», как zip-файл в Проводнике Windows

Что требуется для этого?

+0

http://stackoverflow.com/a/20256714/1870760 –

+4

Он называется [Расширение пространства имен оболочки] (https://msdn.microsoft.com/en-us/library/windows/desktop/cc144095 (v = vs.85) .aspx). Не для слабонервных. –

+0

@JameyD этого не достаточно. –

ответ

1

Как упомянуто @ jonathan-potter, вам понадобится расширение Windows Shell, чтобы сделать это без проблем. Однако есть обходной путь. Если у вас, например, есть расширение файла .dmj, которое вы хотите просмотреть в Проводнике, вы можете создать File Association между файлами .dmj и вашим приложением. Затем, когда в приложении открывается файл .dmj, вы можете создать временную папку с соответствующими файлами и структурой, а затем open that folder in Explorer. Это относительно тривиально для реализации и должно приводить к иллюзии возможности просмотра файла с помощью проводника Windows.

+1

Трудный бит выясняется, когда безопасно удалять временную папку. – MSalters

+0

Это правда. Лично я бы использовал 'NtQuerySystemInformation' с' SystemHandleInformation', чтобы получить все ручки, удерживаемые Explorer. Затем я передам каждый результат в 'NtDuplicateObject', чтобы получить дубликат дескриптора и использовать' NtQueryObject' с 'ObjectNameInformation', чтобы увидеть, к какому файлу указывает дескриптор. Прополощите и повторите это, пока ни одна из ручек не укажет на мою временную папку или что-нибудь внутри нее. –

+0

Я полагал, что ему придется использовать расширение оболочки, но я не вижу способа связать поведение с типом файла. – dmjalund

Смежные вопросы