Перетащите изображение внутри ссылки из IE в C # - PullRequest
1 голос
/ 19 августа 2010

Я пытаюсь получить ссылку на файл изображения (атрибут src), который перетаскиваю из браузера в настольное приложение.Изображение находится внутри якоря (a-tag).

Мой код работает с Chrome и Fx, но не с IE: (

if (e.Data.GetDataPresent("HTML Format"))
                {
                    string data = (string)e.Data.GetData(DataFormats.Html);

Похоже, что в Explorer нет "Формат HTML "Данные отправлены в механизм drg'n'drop, или я делаю это неправильно.

Есть ли способ получить изображение из IE?

ОБНОВЛЕНИЕ Я вижу, что если я выберу ссылку («выделение») с изображением внутри, IE отправит HTML-формат. Fx и Chrome автоматически выполняют выбор при перетаскивании.

1 Ответ

3 голосов
/ 30 августа 2010

У вас есть пара вопросов.

Во-первых, вы должны загрузить ClipSpy tool , который покажет вам, какие форматы перетаскиваются / копируются или копируются / вставляются. Вы обнаружите, что URL-адреса SRC изображений хранятся в формате UniformResourceLocatorW, а также доступны другие форматы, включая CF_HDROP, который указывает на локальную копию файла изображения.

Во-вторых, вы обнаружите, что перетаскивание не работает должным образом из IE защищенного режима в Vista и Windows 7 из-за ограничений безопасности. Чтобы включить перетаскивание для вашего приложения, вы должны перечислить ваше приложение в реестре.

Вы можете зарегистрировать свое приложение для приема веб-контента из операции перетаскивания, создав политику DragDrop. С политиками DragDrop должен быть связан глобальный уникальный идентификатор (GUID). Используйте CreateGuid для создания нового GUID для вашей политики. Затем добавьте ключ в следующее местоположение.

HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Internet Explorer \ Low Rights \ DragDrop

Установите имя нового ключа в GUID, созданный для вашей политики, а затем добавьте следующие параметры к ключу.

  1. Политика (DWORD) должна быть установлена ​​на 3, что говорит о том, что защищенный режим разрешает автоматическое копирование веб-содержимого в процесс приложения.
  2. AppName (REG_SZ) - это имя исполняемого файла вашего приложения.
  3. AppPath (REG_SZ) - это выбранное пользователем место установки исполняемого файла вашего приложения.
...