首页 > 解决方案 > UWP App剪贴板访问:如何防止多次处理相同的项目

问题描述

从 UWP 应用访问 Win10 剪贴板时,应用只能在焦点对准时检查剪贴板。因此,该应用程序不知道在睡眠时发生了什么。对焦后,可再次查看内容。

现在的问题是:它如何确定DataPackageViewfromClipboard.GetContents()是一个新包而不是它已经看过的包?似乎没有 IDDataPackageView.Properties或任何其他可用于区分的东西。

我曾希望这DataPackageView.GetHashCode()可能是答案,但不得不发现DataPackageView每次GetContents()拨打电话时似乎都会重新实例化,所以那里没有运气。

有任何想法吗?

标签: uwpclipboardwindows-10-universal

解决方案


UWP App剪贴板访问:如何防止多次处理相同的项目

Clipboard包含GetHistoryItemsAsync用于获取的方法ClipboardHistoryItemsResult。你可以打电话ClipboardHistoryItemsResult.Items来获取ClipboardHistoryItem。ClipboardHistoryItem 具有 id 属性来通知差异。

var results = await Clipboard.GetHistoryItemsAsync();
var id = results.Items.Last().Id;

如果最后一个项目 id 没有改变,则意味着没有新项目插入剪贴板。请注意,它不能用于验证 DataPackageView 的内容是否相同。

如果要验证DataPackageView,请获取最后两项并分别比较。


推荐阅读