【问题标题】:How to Copy highlighted text in Browser from C#如何从 C# 复制浏览器中突出显示的文本
【发布时间】:2016-11-14 05:55:56
【问题描述】:

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

一旦获得热键事件,它将从当前焦点窗口复制选定或突出显示的数据。

复制数据:

  1. 使用剪贴板

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

  2. 使用 UI AutomationElement

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

问题

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

【问题讨论】:

    标签: c# browser hotkeys keystroke


    【解决方案1】:

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

     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 的列表,DataFormats.RTF (pdf)、DataFormats.Unicode (pdf,browser)(only text) 和 DataFormats.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

    【讨论】:

      猜你喜欢
      • 2014-06-26
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 2015-05-03
      • 2017-05-05
      • 2011-12-26
      相关资源
      最近更新 更多