旧的拖放代码在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;
从网页上拖放一个超链接
该页面不会在低完整性的web浏览器中运行(例如IE保护模式),对吗?拖放不能跨完整性级别工作。
- http://en.wikipedia.org/wiki/Mandatory_Integrity_Control
如果您使用icacls
将可执行文件的完整性级别设置为低会发生什么?如果拖放开始工作,这就是问题所在