如何从C#中的剪贴板历史记录中获取所有数据的列表?
我想从剪贴板历史记录中获取所有数据的列表,但找不到枚举器方法。我会错过什么吗?或者我还能用什么方法来做呢?在剪贴板类中找不到枚举器方法如何从C#中的剪贴板历史记录中获取所有数据的列表?,c#,clipboard,clipboarddata,C#,Clipboard,Clipboarddata,我想从剪贴板历史记录中获取所有数据的列表,但找不到枚举器方法。我会错过什么吗?或者我还能用什么方法来做呢?在剪贴板类中找不到枚举器方法 var clip = Clipboard.GetDataObject(); foreach (var item in clip) { MessageBox.Show(item); } 我能够通过将WinRT API中的剪贴板类引用到我的WPF应用程序中来获取剪贴板历史记录 using Clipboard = Windows.ApplicationMo
var clip = Clipboard.GetDataObject();
foreach (var item in clip)
{
MessageBox.Show(item);
}
我能够通过将WinRT API中的剪贴板类引用到我的WPF应用程序中来获取剪贴板历史记录
using Clipboard = Windows.ApplicationModel.DataTransfer.Clipboard;
Task.Run(async () => {
var items = await Clipboard.GetHistoryItemsAsync();
foreach (var item in items.Items)
{
string data = await item.Content.GetTextAsync();
MessageBox.Show(data);
}
});
我还必须使用TFM版本将我的目标框架设置为.NET5.0,并且不需要任何NuGet软件包。您需要在早期版本的.NET上安装NuGet包
<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
net5.0-windows10.0.19041.0
我不知道剪贴板历史是如何工作的,但是Clipboard
类是传统WindowsIDataObject
剪贴板实现的一个相当薄的包装器。当程序将某个内容放在剪贴板上时,它可以包含一个或多个剪贴板格式(例如,Excel可以将复制的数据作为文本、表格、Excel特定对象以及一个或多个格式的图像放在剪贴板上)。剪贴板的使用者可以查询格式并决定哪种格式最有意义。执行Clipboard.GetText
很容易,如果您想处理其他格式,更重要的是调用IDataObject的GetFormats(false)
方法,然后将该集合用作枚举器,检索它包含的所有格式的数据(IDataObject.GetData(string,bool)
)。这是一段漫长的旅程…@Flydog57我见过一些关于如何处理多种格式的示例,但是GetText
只返回最后一个复制的项目,而不是列表。您是指Windows 10中的剪贴板历史记录(WIN+V
,启用时)?您需要WinRT API来访问这些对象(以托管方式)。