我怎样才能知道我的进程允许创build多less个GDI对象?

有一个registry项,我可以在其中检查(&设置)当前为进程设置的GDI对象配额。 但是,如果用户更改该registry项,则该值将保持旧值,直到重新启动。 在我的程序中,我需要知道是否有一种方法可以以编程方式确定我可以创build多less个GDI对象。 是否有一个获取当前进程的GDI信息的API? 在系统层面呢?

如果您想查找对您而言很重要的当前配额,请创建GDI对象直至失败。 记录这个数字。 然后,摧毁所有的人。

如果您想要定期获取准确的号码,可以这样做。 虽然这可能会相当昂贵。

总是很难证明一个API的确实缺失,但是这个是95%的不行。 很多系统设置都是通过注册表配置的,不需要API来调整它。

陈百强对这类问题的典型回答是“如果你想知道你做错了什么”。 它适用于这里,10,000个句柄的默认配额是巨大的。

既然汉斯已经提到了雷蒙德,我们应该玩他的“想象一下如果这是真的”游戏。 如果这个API – GetGDIObjectLimit或其他 – 存在,它会返回什么? 如果对象数量限制是10000,那么你期望它返回的权利? 那么当系统内存不足时会发生什么? API告诉你一个没有实际意义的值。 如果你接近10000个GDI对象,你做错了什么,你应该专注于解决这个问题。