2011-09-26 81 views
1

我期待从win32 APIs,这将允许我做剪贴板数据的备份(在内存/文件系统中),后来我可以使用SetClipboardData重置它。使用win32 api备份和恢复剪贴板数据

我已经看到了win32 API集,并明白OpenClipboard,getClipboardData和SetClipboardData将为我完成任务。但我不明白在GetClipboardData函数中传递什么格式参数,因为我不知道格式,也不知道任何API来获取剪贴板数据的格式。

我想支持最大可能的格式,我知道像延迟渲染和一些私人数据类型可能无法保存。什么可能是最好的出路,请建议...


我能够备份和恢复文本内容。如何为位图格式做同样的事情。如何基本上将BITMAP从其句柄保存在内存中(使用GetClipboardData获取)

回答

1

通过调用EnumClipboardFormats()找到剪贴板上的格式。请致电GetClipboardData()以获取包含特定格式的剪贴板数据的HGLOBAL。你可以通过调用GlobalSize()来获得内存的大小。要读取由HGLOBAL包装的内存,请使用GlobalLock()GlobalFree()

+2

某些应用程序/格式需要使用'OleGetClipboard()'和'OleSetClipboard()'而不是'GetClipboardData()'和'SetClipboardData()',所以你应该留意这一点。 –

+0

我能够备份和恢复文本内容。如何为位图格式做同样的事情。如何基本上将BITMAP从其句柄保存在内存中(使用GetClipboardData获取) – hjindal

+0

确实有办法做到这一点,但是您需要将其作为一个新问题来提出。 –