【问题标题】:Why class name of control is bad? Can not create new GDI handles?为什么控件的类名不好?不能创建新的 GDI 句柄?
【发布时间】:2015-06-10 11:22:42
【问题描述】:

我有一个由 Delphi 语言创建的程序。这在 Windows XP SP3 上运行。

多次打开和停止程序后(~600 到 700 次)(只打开和停止,不做任何事情)。我的程序会出错:

  • 无法输入到系统的文本框。
  • 无法点击某些按钮。

当出现错误时,错误将一直存在,直到计算机重新启动。 (重启程序无法解决这个bug)

我查看了一些系统信息,结果如下:

  • 正常情况下,总 GDI 句柄小于 GDI 句柄:(使用 GDIView 检测)

    • 大小写正常:3513 个 GDI 句柄
    • 发生错误时:3410
  • 控件的类名错误:(使用 spy++ 检测)

    • 普通:文本框的类名是Tedit。

    • 发生错误时:“Toolbar_Customize”或“”或任何值(此值是awlay 更改)==> 我认为因为那样,我无法将值输入到文本框。

有时,当出现此错误时,我无法启动另一个 Windows 程序。

请帮助我。 P/s:有不清楚的地方欢迎评论

【问题讨论】:

  • Delphi 的哪个版本?另外,当您说您的程序“不做任何事情”时,它究竟做了什么?可以显示出处吗?
  • 我使用的是 Delphi 2007。我只启动和停止程序多时间。不要执行程序的其他功能。

标签: delphi gdi+ gdi delphi-2007


【解决方案1】:

这让我想起了以下问题(RM_GetObjectInstance 消息导致的资源泄漏): http://qc.embarcadero.com/wc/qcmain.aspx?d=90511

最后一条评论中有一个解决方法。

【讨论】:

  • 仅供参考,该问题已在 XE3 中修复。
猜你喜欢
  • 2021-09-22
  • 2011-10-12
  • 2019-10-28
  • 1970-01-01
  • 2010-12-20
  • 2019-08-31
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多