像这样的接缝仅适用于真正的 Delphi 极客。
这是它的外观(抱歉,不能发布图片)
Delphi IDE 丑陋的工具栏
(来源:piccy.info)
出了什么问题- 禁用的 Delphi IDE 工具栏和菜单按钮是丑陋的黑白图像。
我想要做的- 让它们看起来是灰度的。
如何?我做了一些研究。虚拟TCustomImageList.DoDraw
方法的主要问题。当参数化Enabled = False
时,它会画出丑陋的东西(请参阅屏幕截图上的禁用按钮)。我为这个函数创建了自己的覆盖,当它绘制灰度图像时Enabled = False
现在我想在 IDE中用我自己的替换默认值DoDraw
(使用设计时包):
- 我发现单元 ImgList 是在 bds.exe 中编译的,因此修补此函数的技巧
rtlXXX.bpl
将不起作用。 - 搜索函数的正文内容没有结果。看起来 bds.exe 的实现(我正在谈论机器代码)
DoDraw
有点不同。
关于如何使这成为可能的任何建议或想法?作为运行时代码修补的基本示例,我采用了 Andy 的 Midas Speed Fix: FindMethodPtr
, HookProc
,UnhookProc