uwp - UWP App剪贴板访问:如何防止多次处理相同的项目
问题描述
从 UWP 应用访问 Win10 剪贴板时,应用只能在焦点对准时检查剪贴板。因此,该应用程序不知道在睡眠时发生了什么。对焦后,可再次查看内容。
现在的问题是:它如何确定DataPackageView
fromClipboard.GetContents()
是一个新包而不是它已经看过的包?似乎没有 IDDataPackageView.Properties
或任何其他可用于区分的东西。
我曾希望这DataPackageView.GetHashCode()
可能是答案,但不得不发现DataPackageView
每次GetContents()
拨打电话时似乎都会重新实例化,所以那里没有运气。
有任何想法吗?
解决方案
UWP App剪贴板访问:如何防止多次处理相同的项目
Clipboard
包含GetHistoryItemsAsync
用于获取的方法ClipboardHistoryItemsResult
。你可以打电话ClipboardHistoryItemsResult.Items
来获取ClipboardHistoryItem
。ClipboardHistoryItem 具有 id 属性来通知差异。
var results = await Clipboard.GetHistoryItemsAsync();
var id = results.Items.Last().Id;
如果最后一个项目 id 没有改变,则意味着没有新项目插入剪贴板。请注意,它不能用于验证 DataPackageView 的内容是否相同。
如果要验证DataPackageView
,请获取最后两项并分别比较。
推荐阅读
- php - Laravel Paypal POST 请求被拒绝
- ionic4 - 如何在卡 Ionic 上有圆形按钮
- python - 什么可以解决下面提到的错误?
- javascript - 使用 jQuery 在当前页面中搜索
- vb.net - 如何防止在 vb.net 文本文件的文本框中出现换行符 (vbLf) 和回车符 (vbCr)?
- javascript - 另一个 Div 内的 Div 避免点击
- mongodb - Mongorestore 未捕获的异常
- ios - 为什么 Realm 以错误的顺序存储值?
- npm - NPM 运行开始/本地主机未加载并使我的计算机非常慢
- json - 有没有办法根据spring boot中的条件从JSON响应内容的JSON数组的匹配数组元素中省略某些字段