You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WIN32 IsClipboardFormatAvailable函数未设置错误码问题咨询

问题:IsClipboardFormatAvailable未设置错误码的原因

根据微软官方文档描述:如果剪贴板格式不可用,返回值为零。要获取扩展错误信息,请调用GetLastError。

运行以下代码时,输出为0:

#include <Windows.h>
#include <cstdio>
#include <winerror.h>
int main()
{
    //运行程序前已将图片复制到剪贴板
    if(!IsClipboardFormatAvailable(CF_UNICODETEXT))
    {
        printf("%lu", GetLastError());
    }
}

为何IsClipboardFormatAvailable函数未设置错误码?


解答

  • IsClipboardFormatAvailable返回0分两种情况:目标格式确实不在剪贴板中,或者函数本身调用失败(比如剪贴板被其他进程占用锁定)。
  • 只有当函数调用实际出错时,才会设置GetLastError的错误码。如果只是格式不可用(比如你复制的是图片,CF_UNICODETEXT格式本来就不存在),这属于函数的正常预期返回,不会触发错误码设置,此时GetLastError返回的是之前系统或其他操作遗留的错误值(这里刚好是0)。
  • 文档里提到的“获取扩展错误信息”是针对函数调用失败的场景,而非格式不存在的正常情况。你的场景就是后者,所以没有新的错误码被设置。

内容的提问来源于stack exchange,提问作者kaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 03:11:00