簡體   English   中英

如何確定剪貼板數據大小?

[英]How do I determine clipboard data size?

我在剪貼板中有一個自定義數據格式(它由第三方程序放置在剪貼板中)。 我使用以下命令從剪貼板獲取數據大小:

HANDLE data = GetClipboardData(format);
DWORD len = GlobalSize(data);

問題是,我得到的數據大小不正確(大約加上實際大小的100字節)。 我的意思是,剪貼板中實際“有效”數據的大小不同。 而且,從一個調用到另一個調用,我得到不同的(!)數據大小(盡管數據本身不會改變)。 看起來很神秘。 我的意思是,如果我繼續在循環中執行上述兩行,則此格式的“ len”將獲得不同的值。

所以我基本上有兩個問題

  1. 對於相同的數據,“ GlobalSize”怎么可能從一個調用返回另一個調用的非恆定值?

  2. 如何獲得這種格式的剪貼板數據的“實際”數據大小?

先感謝您!

GlobalSize功能的MSDN頁面上:

內存塊的大小可能大於分配內存時請求的大小

因此,您不能依靠GlobalSize返回所請求的分配大小。 相反,您應該將大小作為數據對象本身的一部分傳遞(例如,以包含大小的DWORD開頭,后跟數據)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM