首页 > 解决方案 > 如何从浏览器拖动的链接中获取 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。

哪一个是最好的,我如何提取信息?

标签: c#

解决方案


页面标题和 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]);
      }
}

推荐阅读