【问题标题】:Find out if the clipboard content comes from Internet Explorer查明剪贴板内容是否来自 Internet Explorer
【发布时间】:2013-12-02 19:01:19
【问题描述】:

我希望能够将带有功能超链接的剪贴板内容粘贴到我的 Winform 控件。为了使它工作,我尝试检查剪贴板是否包含 HTML 并且没有 RTF,然后我可以相应地解析 HTML 内容。不幸的是,Internet Explorer 在剪贴板内容中生成 RTF 和 HTML,这样我就无法真正判断内容来自浏览器。例如,Microsoft word 做同样的事情,到目前为止,我发现区分办公产品与 IE 的唯一方法是在 HTML 内容中检查命名空间 xmlns:o"urn:schemas-microsoft-com:office:office"剪贴板。我不能在所有情况下都简单地使用 HTML,因为我更喜欢 RTF 或者只是来自浏览器以外的其他来源的 unicode 内容。

有没有办法确定剪贴板内容来自特定应用程序?在我的情况下,来自 IE?到目前为止,我只使用了 Clipboard.Contains(TextDataFormat.HTML) 和 Clipboard.GetDataObject().GetFormats() 但我找不到其他任何东西。

【问题讨论】:

  • 如果剪贴板来自 IE 驱动的程序怎么办?或者某些程序选择生成您无法理解的其他 HTML 内容?更好地向用户描述错误。
  • 请注意,检查数据中的内容(即 XML 的架构)会有效地触发“粘贴”操作,并且会产生意想不到的后果,例如触发延迟渲染,如果使用 RemDesk 或其他方式通过网络完成复制/粘贴。要记住的事情。

标签: winforms internet-explorer-9 internet-explorer-10 clipboard internet-explorer-11


【解决方案1】:

您可以使用 P/Invoke 类通过http://pinvoke.net/default.aspx/user32/GetWindowText.html 获取调用应用程序窗口标题。对于 IE,标题是页面名称,后缀为 - Microsoft Internet Explorer,此 IE 的默认标题。

这是如何使用 GetWindowsText 的示例代码 C# how to use WM_GETTEXT / GetWindowText API

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多