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

时间:2016-07-12 06:17:17

标签: c# browser hotkeys keystroke

我有一个基于C#的winform应用程序,它注册了一个Hotkey-Event。

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

复制数据:

  1. 使用剪贴板

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

  2. 使用UI AutomationElement

    使用AutomationElement获取Focus windows元素。并使用其TextPattern获取所选数据。

  3. 问题

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

1 个答案:

答案 0 :(得分:0)

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

 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,浏览器)(仅文本)和DataFormats.HTML(浏览器)可能是您的候选者。 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