我正在尝试检索复制到剪贴板的文本,但文本永远不会被检索。
我正在使用这段代码:
if (Clipboard.ContainsText())
{
text = Clipboard.GetText();
}
现在这个条件永远不会返回true,这意味着剪贴板永远不会包含任何文本,尽管我将几段文本复制到剪贴板。
我也尝试了这个代码,它也是一样的:
IDataObject iData = Clipboard.GetDataObject();
if (iData != null && iData.GetDataPresent(DataFormats.Text))
{
text = (String)iData.GetData(DataFormats.Text);
}
答案 0 :(得分:1)
您在包含中指定格式,此处为带有html数据的示例
使用ContainsData
和GetText
bool IsHTMLDataOnClipboard = Clipboard.ContainsData(DataFormats.Html);
string htmlData;
if(IsHTMLDataOnClipboard)
{
htmlData = Clipboard.GetText(TextDataFormat.Html);
}
答案 1 :(得分:0)
或者你可以使用;
static string clipHTML { get; set; }
public yourclass()
{
clipHTML = Clipboard.GetText(TextDataFormat.Html);
}
根据您使用的.NET Framework,您可能会在下面发出警告。
DataFormats.Html specification表示它以UTF-8编码。但是.NET 4 Framework中存在一个较低的错误,它实际上读作UTF-8为 Windows-1252 。
你会得到一些错误的编码,导致有趣/不好的角色如 'A', 'A€¹','A ' 'å½', 'Å¡',' A '“, '¾', 'A', 'A', '¡',' A¢ ”, 'A£', 'å¤', 'A¥', 'Â|', '§', 'A', 'A©'
例如,在Windows-1252中,“€”被错误地编码为“â,”。
此专用网站的详细说明 Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters
但是使用conversions tables你不会丢失任何UTF-8字符。您可以从DataFormats.Html获取原始的原始UTF-8字符。 (注意:Ppm解决方案默认为ASCII以及此信息)
Soln:创建翻译词典并搜索和替换。