如何从 C# 复制浏览器中突出显示的文本
本文关键字:显示 文本 浏览器 复制 | 更新日期: 2023-09-27 17:56:23
我有基于 C# 的 winform 应用程序,它注册了一个热键事件。
获取热键事件后,它将从当前焦点窗口复制所选或突出显示的数据。
要复制数据:
-
使用剪贴板
使用
SendKey.SendWait
发送CTRL + C
击键并从剪贴板获取数据。 -
使用 UI 自动化元素
使用 AutomationElement 获取焦点窗口元素,并使用其 TextPattern 获取所选数据。
问题
- 上述解决方案适用于记事本,WordPAd,MS Word。
- 我无法从浏览器,Pdf类型的应用程序中选择数据。
您是否检查了 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