Пользователь щелкает правой кнопкой мыши по файлу (скажем, на рабочем столе) и нажимает «копировать». Теперь, как определить в C#, если файл, скопированный в буфер обмена, является типом изображения?Определить, скопирован ли файл в буфер обмена
Clipboard.ContainsImage() не работает в этом случае
Ниже определяет, является ли изображение непосредственно копируется в буфер обмена, а не если файл копируется в буфер обмена
IDataObject d = Clipboard.GetDataObject();
if(d.GetDataPresent(DataFormats.Bitmap))
{
MessageBox.Show("image file found");
}
К быть ясным. Я хочу определить, является ли «файл», скопированный в буфер обмена, изображением.
Редактировать: ответы велики, но как мне получить имя файла, скопированного в буфер обмена? Clipboard.getText(), похоже, не работает. Edit2: Clipboard.GetFileDropList() works
Во многих случаях проверки расширения файла достаточно. Однако вы можете использовать метод «Magic-Bytes» (как сказано в CodeInChaos) и «Метод обработки исключений» (как сказал Shekhar_Pro). Также есть инструмент под названием «TrID», который является бесплатной утилитой командной строки, которая может использоваться для определения типов файлов с использованием базы данных подписи. http://mark0.net/soft-trid-e.html – fardjad