选择剪贴板格式顺序

此文源自http://social.msdn.microsoft.com/Forums/en/windowssdk/thread/94bb2db4-3ca2-4cd8-9f7c-6dd9aab6fd18的讨论

在复制数据到剪贴板时,一个应用程序应该提供尽可能多的格式使得更多的程序能够识别剪贴板上的数据。例如IE将复制的HTML保存为CF_UNICODETEXT、CF_TEXT和CF_HTML等格式。

很多程序在识别剪贴板数据的时候,在找到第一个支持的格式时就停止搜索。有的程序支持粘贴时选择格式(例如Word里面的选择性粘贴),但是这样的程序是例外,在粘贴时支持多种剪贴板格式的程序并不多。为了避免数据往返时的数据丢失,在决定剪贴板格式顺序的时候,包含最多信息的格式应该放在第一个,而包含较少的放在后面,包含最少信息的放在最后。举例来说,CF_HTML 第一, CF_UNICODETEXT第二,CF_TEXT最后。在复制一个jpeg图片到剪贴板的时候,可以以如下顺序填充剪贴板:CF_HDROP、CFSTR_FILECONTENTS、CFSTR_FILENAME、CFSTR_MIME_JPEG、CF_DIB、CF_PALETTE 、CF_METAFILEPICT、CF_ENHMETAFILE、CF_DIBV5。

当然,有时候你想限制剪贴板上的数据的格式,例如在从Visual Studio复制代码但是期望在粘贴代码的时候不包含格式,那么你可能像要把一个信息量较少的数据格式放在最前面。 

如果你使用一个浏览器作为文本编辑器,你可以通过实现OnFilterDataObject在粘贴的时候去掉文字的格式。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
如果你想在一个 Office Add-in 中拦截剪切板事件,可以使用 Office.js 中的 API 来实现。具体来说,你可以使用 Office.js 中的 Binding API 来创建一个与剪切板相关的数据绑定,然后通过该绑定来获取剪切板中的数据。 下面是一个简单的示例代码,演示了如何在 Word Add-in 中拦截剪切板事件: ```javascript Office.context.document.bindings.addFromSelectionAsync( Office.BindingType.Text, { id: "clipboardBinding" }, function (result) { if (result.status === Office.AsyncResultStatus.Succeeded) { var clipboardBinding = result.value; clipboardBinding.addHandlerAsync( Office.EventType.BindingDataChanged, onClipboardDataChanged); } else { console.log("Failed to create clipboard binding: " + result.error.message); } } ); function onClipboardDataChanged(eventArgs) { // 处理剪切板数据变化事件 console.log("Clipboard data changed: " + eventArgs.bindingData); } ``` 在这个示例代码中,我们首先使用 `addFromSelectionAsync` 函数创建了一个文本数据绑定,并指定了一个 ID 为 "clipboardBinding"。然后,我们通过 `addHandlerAsync` 函数注册了一个事件处理程序 `onClipboardDataChanged`,该处理程序会在剪切板数据发生变化时被调用。 在 `onClipboardDataChanged` 处理程序中,我们可以通过 `eventArgs.bindingData` 属性获取到剪切板中的文本数据,并对其进行处理。需要注意的是,Office Add-in 中的数据绑定是异步操作,因此需要在处理程序中使用异步操作和回调函数来确保正确的执行顺序和异常处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒋晟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值