【问题标题】:How do I get the equivalent of CTRL-A / CTRL-C in a WPF WebBrowser如何在 WPF WebBrowser 中获得等效的 CTRL-A / CTRL-C
【发布时间】:2011-09-28 02:14:14
【问题描述】:

我是 WPF 和 C# 的新手,所以我会尽量具体一点,以便您理解。

我想做什么?

我有一个带有 WebBrowser 控件的 WPF 页面。我正在导航到在控件中完美显示的特定 URL。现在,我想以编程方式全选并将网页内容复制到我的剪贴板。

我尝试了什么

dynamic doc = webbrowser1.Document;
var htmlText = doc.documentElement.InnerText;

然而,这会删除一些格式,如空表列,因此它不会是与 CTRL-A / CTRL-C 相同的数据

我也尝试过使用 InnerHTML 进行上述操作,这给了我 HTML 代码。然后,当我将其粘贴到一个空的记事本中并将其另存为 .html 文件时,在 IE 中从外部打开并执行 CTRL-A / CTRL-C 它会给我想要的结果。

知道如何通过代码获得完全相同的结果吗?!

【问题讨论】:

  • 您尝试打印它的内容吗?看看链接:stackoverflow.com/questions/1298969/…
  • @caglar_gonul 抱歉,我没有尝试打印内容。我应该试试吗?我也尝试过使用 doc.ExecCommand("SelectAll",null,null) 和 "doc.ExecCommand("Copy",null,null) 但这也不起作用。
  • 能否请您添加对 Microsoft.mshtml 的引用并尝试上面的链接。应该需要 5 分钟。
  • @caglar_gonul 这导致:​​无法将类型为“mshtml.HTMLDocumentClass”的 COM 对象转换为接口类型“System.Windows.Documents.IDocumentPaginatorSource”。此操作失败,因为 IID 为“{2C0C27DF-282F-3225-ADCD-CEC68F890EEB}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .

标签: c# wpf browser


【解决方案1】:

使用以下代码:

  dynamic document = browser.Document;
  document.ExecCommand("SelectAll", true, null);
  document.ExecCommand("Copy", false, null);

【讨论】:

  • 帮助安瓦卡!这行得通。即使我之前尝试过这个,我可能在 ExecCommand 的参数中犯了错误。
  • 添加 document.ExecCommand("Unselect", true, null) 将在完成后清除选择。
  • 知道如何在 Windows 窗体中使用它吗?
猜你喜欢
  • 1970-01-01
  • 2013-01-01
  • 2010-10-23
  • 2014-10-11
  • 1970-01-01
  • 2014-01-29
  • 2011-06-04
  • 2019-10-17
  • 1970-01-01
相关资源
最近更新 更多