我有一个基于C#的winform应用程序,它注册了一个Hotkey-Event。
一旦获得Hotkey事件,它将从当前焦点窗口复制选定或突出显示的数据。
复制数据:
使用剪贴板
使用SendKey.SendWait
发送CTRL + C
按键并从剪贴板获取数据。
使用UI AutomationElement
使用AutomationElement获取Focus windows元素。并使用其TextPattern获取所选数据。
问题
答案 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