我需要替换整个 Windows 中的预定义窗口类之一。例如,我想替换“EDIT”类,以便在任何 Windows 程序CreateWindowEx
以“EDIT”作为类名参数调用时使用我自己的自定义编辑框。
我怎样才能做到这一点?消息挂钩会有帮助吗?我相信在这种情况下,消息挂钩会带来过多的开销。我的替代方案是什么?
您所要求的,即更改其他进程看到的“EDIT”类的行为是一种安全风险,并且不容易实现:例如, http: //msdn.microsoft.com/en-us/library /ms997565.aspx说,“子类化只允许在进程内。应用程序不能子类化属于另一个进程的窗口或类。 ”
不可能的架构原因是代码与窗口类相关联,您的代码与您的子类相关联,并且您的代码不容易用于(无法从)其他进程(通过hackish除外) DLL 注入等技术)。
APISetWindowsHookEx
是否可以为您提供所需的东西,而不是子类化?