IDataObject или IStream в качестве источника копии оболочки - без расширения оболочки - PullRequest
0 голосов
/ 06 марта 2012

У меня есть программа, которая передает файлы на компьютеры Windows (среди прочего).У нас есть два метода передачи:

  1. - легко обнаруживаемый метод «отправки файлов», который можно найти в наших меню, но он не обеспечивает индикатор выполнения или возможность отмены
  2. меньше обнаруживаемого перетаскиванияи методы вырезания / вставки, которые обеспечивают индикатор выполнения и возможность отмены через оболочку Windows

Мы хотели бы получить диалоговое окно прогресса оболочки Windows с кнопкой отмены для метода 1.

Поэтому я хочу сделать копию оболочки, инициированную с помощью SHFileOperation (или IFileOperation), с источником моего IDataObject (или его IStreams) и целью папки на диске (которую я укажу).

У нас уже естьреализация IDataObject, которая предоставляет наши виртуальные файлы через CFSTR_FILEDESCRIPTOR, STGMEDIUM, IStream и т. д. Это прекрасно работает.Мы хотели бы использовать как можно большую часть этой реализации.

Я вижу, что расширение оболочки Windows с расширением пространства имен было бы очевидным способом «смонтировать» мои виртуальные файлы в элементы оболочки, выступая в качестве источника.копии, но я отказываюсь трогать реестр или иным образом связываться с чем-либо постоянным в их системе.Я не вижу способа временного монтирования виртуальных элементов.

У меня уже есть рабочий код для запуска окна обозревателя в целевой каталог, поэтому очевидный тип решения «последней инстанции» будет вызыватьОперация перетаскивания выполняется программно, и у меня есть код, чтобы обмануть Windows для выполнения большей части этого, но я бы предпочел не идти туда, если есть более элегантный (и более перспективный) метод, который я пропускаю.Есть идеи?

...