如何从 C# 复制浏览器中突出显示的文本

本文关键字:显示 文本 浏览器 复制 | 更新日期: 2023-09-27 17:56:23

我有基于 C# 的 winform 应用程序,它注册了一个热键事件。

获取热键事件后,它将从当前焦点窗口复制所选或突出显示的数据。

要复制数据:

  1. 使用剪贴板

    使用SendKey.SendWait发送CTRL + C击键并从剪贴板获取数据。

  2. 使用 UI 自动化元素

    使用 AutomationElement 获取焦点窗口元素,并使用其 TextPattern 获取所选数据。

问题

  1. 上述解决方案适用于记事本,WordPAd,MS Word。
  2. 我无法从浏览器,Pdf类型的应用程序中选择数据。

如何从 C# 复制浏览器中突出显示的文本

您是否检查了 IDataObject 返回的所有数据格式以检查返回的数据?

 private void button2_Click(object sender, System.EventArgs e) {
    // Declares an IDataObject to hold the data returned from the clipboard.
    // Retrieves the data from the clipboard.
    IDataObject iData = Clipboard.GetDataObject();
    // Determines whether the data is in a format you can use.
    if(iData.GetDataPresent(DataFormats.Text)) {
       // Yes it is, so display it in a text box.
       textBox2.Text = (String)iData.GetData(DataFormats.Text); 
    }
    else {
       // No it is not.
       textBox2.Text = "Could not retrieve data off the clipboard.";
    }
 }

上述代码的完整描述位于https://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.getdataobject(v=vs.110).aspx

下面的链接是所有22种可用DataFormats的列表,DataFormat.RTF(pdf),DataFormat.Unicode(pdf,browser)(仅文本)和DataFormat.HTML(browser)可能是您的候选者。https://msdn.microsoft.com/en-us/library/system.windows.forms.dataformats(v=vs.110).aspx

如何:从剪贴板检索数据https://msdn.microsoft.com/en-us/library/c2thcsx4(v=vs.110).aspx