2009-01-14 58 views
0

我需要在Windows中替换预定义的窗口类之一。例如,我想替换“EDIT”类,以便在任何Windows程序调用CreateWindowEx并将“EDIT”用作类名称参数时使用我自己的自定义编辑框。在Windows中替换窗口类

我该如何做到这一点?消息钩会有帮助吗?我认为在这种情况下,消息钩子会带来太多的开销。我有什么选择?

回答

1

你所要求的,即改变其他进程看到的“EDIT”类的行为是一种安全风险,并且不易实现:例如,http://msdn.microsoft.com/en-us/library/ms997565.aspx说,“子类只允许在一个应用程序不能对一个属于另一个进程的窗口或类进行子类化

为什么不可能的架构原因是代码与窗口类相关联,您的代码与您的子类关联,你的代码不容易被其他进程使用(不能从其他进程运行)(除了通过诸如DLL注入之类的黑客技术之外)。

可能SetWindowsHookEx API给你你需要什么,而不是子类?

+0

是否有可能使用我自己的方法替换定义EDIT的DLL,在将所有其他调用转发给原始DLL时提供自己的编辑定义? – 2009-01-14 08:39:39