在运行时用另一个窗口替换窗口的控件

时间:2010-03-11 15:31:52

标签: c# c++ winapi controls handle

我有一个窗口及其richEdit控件的句柄。我可以用自己的一个替换上述控件吗?我希望它表现得像原始的一样,即成为窗口的一部分,等等。

我将进一步阐述这个场景 - 我目前正在拆解一个应用程序,其中一个功能是文本编辑器。我当前(受限制的)环境中有各种程序挂钩,其中一个程序产生编辑器窗口的句柄。另一个允许我获取RichEdit20A控件窗口主机的句柄。

我想做的是 - 用我自己的(可能是.NET等价物)覆盖控件并修补应用程序的GetWindowText调用以使用新控件。为了实现它,我计划用C#/托管C ++编写类库并将其导入我的应用程序(用非托管C ++编写)。

此外,文本编辑器可以有任意数量的实例。

1 个答案:

答案 0 :(得分:0)

听起来太复杂了。只需替换其WndProc(GWL_WNDPROC),不转发任何内容,然后使HWND无效。这将强制重绘(WM_PAINT)然后您可以捕获。业主可能甚至都不会注意到(除非他们也把它挂钩了),