在从IE到C#的链接内拖放图像

时间:2010-08-19 06:25:16

标签: c# internet-explorer drag-and-drop anchor image

我正在尝试链接到图像文件(src属性),我将其从浏览器拖放到我的桌面应用程序中。图像位于锚点(a-tag)内。

我的代码适用于Chrome& Fx - 但不是IE :(

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

似乎资源管理器没有任何“HTML格式”数据发送到drg'n'drop机制,或者我做错了。

有没有办法从IE获取图像src?

更新 我明白了,如果我在其中选择带有Image的链接(“选择”),IE将发送HTML格式。 Fx和Chrome会在拖动时自动执行选择。

1 个答案:

答案 0 :(得分:3)

你有几个问题。

首先,您应该下载ClipSpy tool,它会准确显示拖放或复制/粘贴格式的内容。您会发现图像SRC URL以UniformResourceLocatorW格式存储,并且还有其他各种格式,包括CF_HDROP,它指向图像文件的本地副本。

其次,由于安全限制,您会发现拖放操作无法在Vista和Windows 7上的保护模式IE下正常工作。要启用拖放到您的应用程序,您必须在注册表中列出您的应用程序。

您可以通过创建DragDrop策略来注册您的应用程序以通过拖放操作接受Web内容。 DragDrop策略必须具有与之关联的全局唯一标识符(GUID)。使用CreateGuid为策略创建新的GUID。接下来,将密钥添加到以下位置。

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Low Rights \ DragDrop

将新密钥的名称设置为为策略创建的GUID,然后将以下设置添加到密钥。

  1. 策略(DWORD)应设置为3,告知保护模式允许将Web内容静默复制到您的应用程序进程。
  2. AppName(REG_SZ)是应用程序可执行文件的文件名。
  3. AppPath(REG_SZ)是应用程序可执行文件的用户选择安装位置。