是否 Windows recycle/reuse 已注册剪贴板格式 ID
Does Windows recycle/reuse Registered Clipboard Format ids
问题
Windows 有一个 RegisterClipboardFormat 函数,returns 一个 id >0xC000 <0xFFFF 给出了该格式的名称。
如果格式已经注册,它将 return 与上次 return 相同的 ID。
由于只有 4k 个 ID 可用,如果许多应用程序请求唯一格式,它们最终可能需要重新使用格式。 windows 会释放格式 ID 以供重复使用吗?
为什么我关心
我想测试一下格式是否已经注册。不幸的是 Windows 没有为此提供功能(至少据我所知)。如果 windows 从不回收 ID,我可以只保留已注册格式的列表,而不必每次需要测试时都搜索所有 4K ID。
更新
到目前为止,我只是在一台计算机上检查了所有格式。
GetClipboardFormatName returned 0,格式错误代码 0x06:
- 0xC000
- 0xC100
- 0xC200
- 0xC300
- 0xC3AA
- 0xC3AE-0xFFFF
所以我最初的猜测是 0x100 的所有倍数都在内部保留,并且确实存在某种回收,否则 0cC3AA 将不会免费。即将进行其他测试。
我认为它们会在重启时重置。即富文本格式今天会给你一个答案,继续使用那个值直到你重新启动,然后你会得到一个不同的数字。我最近没有测试过这个,但我很确定我过去做过一次,但可能是 20 年前了!
是的!
在尝试使用 GetClipboardFormatName 后,我发现 windows 7 将在第一个有效条目中注册新格式*。此外,有时格式** 未注册。那些未注册的句柄 ID 将成为未来格式的有效条目。
*0x100的倍数似乎从未注册过
**我无法确定取消注册格式的条件。
问题
Windows 有一个 RegisterClipboardFormat 函数,returns 一个 id >0xC000 <0xFFFF 给出了该格式的名称。
如果格式已经注册,它将 return 与上次 return 相同的 ID。
由于只有 4k 个 ID 可用,如果许多应用程序请求唯一格式,它们最终可能需要重新使用格式。 windows 会释放格式 ID 以供重复使用吗?
为什么我关心
我想测试一下格式是否已经注册。不幸的是 Windows 没有为此提供功能(至少据我所知)。如果 windows 从不回收 ID,我可以只保留已注册格式的列表,而不必每次需要测试时都搜索所有 4K ID。
更新
到目前为止,我只是在一台计算机上检查了所有格式。 GetClipboardFormatName returned 0,格式错误代码 0x06:
- 0xC000
- 0xC100
- 0xC200
- 0xC300
- 0xC3AA
- 0xC3AE-0xFFFF
所以我最初的猜测是 0x100 的所有倍数都在内部保留,并且确实存在某种回收,否则 0cC3AA 将不会免费。即将进行其他测试。
我认为它们会在重启时重置。即富文本格式今天会给你一个答案,继续使用那个值直到你重新启动,然后你会得到一个不同的数字。我最近没有测试过这个,但我很确定我过去做过一次,但可能是 20 年前了!
是的!
在尝试使用 GetClipboardFormatName 后,我发现 windows 7 将在第一个有效条目中注册新格式*。此外,有时格式** 未注册。那些未注册的句柄 ID 将成为未来格式的有效条目。
*0x100的倍数似乎从未注册过
**我无法确定取消注册格式的条件。