c# - 如何从浏览器拖动的链接中获取 URL 和标题
问题描述
我希望我的应用程序接受从浏览器拖放的链接,然后显示链接的 URL 和标题。
编辑:我应该更清楚,我的意思是浏览器地址栏中的链接。
private void test_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void test_DragDrop(object sender, DragEventArgs e)
{
string text = string.Empty;
if (e.Data.GetDataPresent(DataFormats.UnicodeText))
{
text = e.Data.GetData(DataFormats.UnicodeText).ToString();
Console.WriteLine("text: {0}", text);
}
}
使用此代码,我可以获取 URL,例如https://stackoverflow.com/questions/ask ,但不能获取诸如“提问”之类的页面标题。
有许多可用的数据格式,例如 DragContext、DragImageBits、text/x-moz-url、FileGroupDescriptorW、FileContents、UniformResourceLocatorW、UniformResourceLocator、System.String、UnicodeText 和 Text。
哪一个是最好的,我如何提取信息?
解决方案
页面标题和 URL 以“text/x-moz-url”数据格式提供。这适用于当前版本的 Chrome 和 Firefox 浏览器。
if (e.Data.GetDataPresent("text/x-moz-url")) //Chrome, Firefox
{
MemoryStream data = (MemoryStream)e.Data.GetData("text/x-moz-url");
string dataStr = Encoding.Unicode.GetString(data.ToArray());
string[] parts = dataStr.Split(((char)10));
for (int i = 0; i < parts.Count(); i++ )
{
listBox1.Items.Add(parts[i]);
}
}