mogo 发表于 2025-11-28 11:14:33

【已解决】 接收到未经处理的严重异常,代码为: 0xE06D7363

本帖最后由 mogo 于 2025-11-29 15:03 编辑

我想只录制鼠标周围,这样最终的文件应该会比较小。使用cximage转出的gif不管怎么弄每帧间隔都是1秒,而且红色的指示线变成黑色了。所以想试试gdi+。现在问题是在 “系统热键类_热键被按下” 的方法中加入代码后启动就报错,为什么还未执行到这里就报错呢?

Xelloss0618 发表于 2025-11-28 14:19:10

主要问题在 GdiplusStartupInput 结构体上,这玩意带构造函数,不是纯C的结构体了,不能用“视窗.结构类”封装,目前只能用别名封装或者全部在嵌入语句里调用。

<火山程序 类型 = "通常" 版本 = 1 />

类 GdiplusStartupInput <公开 @视窗.外部头文件 = "gdiplus.h" @别名 = "Gdiplus::GdiplusStartupInput" @别名类型 = 本地类>
{
    变量 GdiplusVersion <公开 类型 = 整数 @输出名 = "GdiplusVersion">
    变量 SuppressBackgroundThread <公开 类型 = 逻辑型 @输出名 = "SuppressBackgroundThread">
    变量 SuppressExternalCodecs <公开 类型 = 逻辑型 @输出名 = "SuppressExternalCodecs">
}


GdiplusStartup里的参数input改成变整数,然后用“取变量地址”传参。

mogo 发表于 2025-11-29 10:53:54

Xelloss0618 发表于 2025-11-28 14:19
主要问题在 GdiplusStartupInput 结构体上,这玩意带构造函数,不是纯C的结构体了,不能用“视窗.结构类” ...

感谢解惑。问题依旧存在,注释掉取编码器数量的这一行新旧代码都可以成功初始化。但我还是想不明白为什么没有执行到这里就报错了,为什么呢?





Xelloss0618 发表于 2025-11-29 11:47:25

看了一下,GetImageEncodersSize 在DLL里的导出函数是 GdipGetImageEncodersSize,找不到函数自然就崩了

mogo 发表于 2025-11-29 15:02:55

Xelloss0618 发表于 2025-11-29 11:47
看了一下,GetImageEncodersSize 在DLL里的导出函数是 GdipGetImageEncodersSize,找不到函数自然就崩了 ...

原来如此,非常感谢!!!
页: [1]
查看完整版本: 【已解决】 接收到未经处理的严重异常,代码为: 0xE06D7363