Сохраните любой тип файла, скопированный в буфер обмена

Я работаю с кодом из этой статьи стека (в частности, второй ответ), чтобы отслеживать, когда меняется буфер обмена. Конечной целью этого приложения является то, что пользователь может скопировать любой тип файла (будь то.xlsx, .pk3, .sln и т. Д.), Папку, изображение или строку и автоматически сохранить его в своем временном каталоге. Я бы установил ограничения на размер файла, чтобы временная папка не перегружалась. Общая концепция приложения заключается в обеспечении удобства, чтобы пользователи могли восстанавливать данные, которые были скопированы, но затем удалены или потеряны.

Пока что приведенный выше код отлично работает для строк и изображений. Тем не менее, после просмотра элементов в списке DataFormats (то есть использование: DataFormats.Bitmap), я не могу найти универсальный для любого типа файла или для папок. Я также не могу найти способ определить, какой тип файла был скопирован. Есть ли способ определить это? Например, если есть способ получить расширение файла скопированного файла, это поможет.

Может быть, мои надежды слишком высоки. Даже если бы я хранил массив разрешенных типов файлов (.xlsx, .sln и т. Д.), Я никак не мог бы сохранить этот тип файла. Кажется, я не могу получить байты от типа DataObject, что было бы простым выходом.

Любые идеи о том, как я мог бы сделать это? Благодарю.

1 ответ

Причина, по которой вы не можете найти все, заключается в том, что каждый формат регистрируется на главном компьютере приложениями, использующими этот формат файла. Вы можете получить текущий список форматов файлов, которые есть у объекта, хранящегося в буфере обмена, с помощью string[] format = iData.GetFormats();

Но не могли бы вы просто сериализовать (для точного копирования) то, что входит в данные, и сохранить их как последнюю запись в Clipboard.GetFileDropList();

Похоже, что все файлы, которые не содержат аудио / изображений / строк, в любом случае имеют очень специфический набор форматов, только мои мысли

может быть, посмотрите здесь http://www.codeproject.com/Articles/15333/Clipboard-backup-in-C

Другие вопросы по тегам