У меня есть некоторый код, который позволяет мне перетаскивать гиперссылку с веб-страницы на форму окна, и он разделяет URL и заголовок и помещает их в два разных текстовых поля.
Это работает наWindows XP нормально, но на Windows 7 больше не работает.Я не уверен, в чем заключается разница.
object data = e.Data.GetData("UniformResourceLocator");
данные всегда будут нулевыми, но когда я использую
string[] fmts = e.Data.GetFormats();
, один из fmts всегда будет 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;