旧的拖放代码在windows 7中不再工作

本文关键字:不再 工作 windows 拖放 代码 | 更新日期: 2023-09-27 17:49:51

我有一些代码,允许我将一个超链接从一个网页拖放到一个windows窗体上,它将URL和Title分开,并将它们放在两个不同的文本框中。

这在windows XP上运行良好,但在windows 7上不再工作。我不确定区别在哪里。

object data = e.Data.GetData("UniformResourceLocator");

data总是null,但是当我使用

 string[] fmts = e.Data.GetFormats();

其中一个将永远是UniformResourceLocator,连同一堆其他的,我似乎永远无法得到任何数据。如果有人有资源可以给我指点什么,我会非常感激,这对我来说真的很困惑。

谢谢。

更新:添加了以前可以工作的方法代码

  string hyperLinkUrl = null;
        string hyperLinkText = null;
            hyperLinkUrl = e.Data.GetData(typeof(string)) as string;
            // some browser deliver url and text
            // in UniformResourceLocator (Firebird)
            string[] tokens = null;
            if (hyperLinkUrl != null)
            {
               tokens = hyperLinkUrl.Split(''n');
            }
            if (tokens != null && tokens.Length > 1)
            {
                hyperLinkUrl = tokens[0];
                hyperLinkText = tokens[1];
            }
            // we have to read FILEGROUPDESCRIPTOR to get the text (IE)
            else
            {             
                System.IO.Stream ioStream =
                (System.IO.Stream)e.Data.GetData("FileGroupDescriptor");
                byte[] contents = new Byte[512];
                try
                {
                    ioStream.Read(contents, 0, 512);
                }
                catch (Exception x)
                {
                }    
                ioStream.Close();
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                //The magic number 76 is the size of that part of the
                //FILEGROUPDESCRIPTOR structure before
                // the filename starts - cribbed
                //from another usenet post.
                for (int i = 76; contents[i] != 0; i++)
                {
                    sb.Append((char)contents[i]);
                }
                if (!sb.ToString(sb.Length - 4, 4).ToLower().Equals(".url"))
                {
                    throw new Exception("filename does not end in '.url'");
                }
                hyperLinkText = sb.ToString(0, sb.Length - 4);
            }
            tbLinkTitle.Text = hyperLinkText;
            tbLinkAddress.Text = hyperLinkUrl;

旧的拖放代码在windows 7中不再工作

从网页上拖放一个超链接

该页面不会在低完整性的web浏览器中运行(例如IE保护模式),对吗?拖放不能跨完整性级别工作。

  • http://en.wikipedia.org/wiki/Mandatory_Integrity_Control

如果您使用icacls将可执行文件的完整性级别设置为低会发生什么?如果拖放开始工作,这就是问题所在