【发布时间】:2010-03-11 15:31:51
【问题描述】:
我有一个窗口句柄及其richEdit 控件。我可以用我自己的一个替换上述控件吗?我希望它表现得像原来的那样,即成为窗口等的一部分。
我将进一步详细说明该场景 - 我目前正在反汇编一个应用程序,其功能之一是文本编辑器。我当前的(受限制的)环境中有各种程序挂钩,其中一个产生了编辑器窗口的句柄。另一个允许我获取 RichEdit20A 控件窗口主机的句柄。
我想做的是 - 用我自己的(大概是它的 .NET 等效项)覆盖控件并修补应用程序的 GetWindowText 调用以使用新的。为了实现它,我计划用 C#/托管 C++ 编写类库并将其导入我的应用程序(它是用非托管 C++ 编写的)。
此外,可以有任意数量的文本编辑器实例。
【问题讨论】:
-
这是不可能的,没有办法让应用知道它需要使用不同的窗口句柄。或者将托管代码注入到非托管程序中。
-
我当前的钩子允许我在 GetWindowTextA 调用(配备 asm 包装器的裸函数)之前修改调用堆栈,并且我不打算注入托管代码本身。你看,我的应用程序充当修补应用程序的非托管包装器。除了调用类库的方法来设置/获取后者的文本之外,它什么也不做。
标签: c# c++ winapi controls handle