c# - 在运行时用另一个窗口控件替换窗口控件

标签 c# c++ winapi controls handle

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

我将进一步详细说明该场景 - 我目前正在反汇编一个应用程序,其功能之一是文本编辑器。我当前的(受限)环境中有各种程序 Hook ,其中之一会产生编辑器窗口的句柄。另一个允许我获取 RichEdit20A 控件窗口宿主的句柄。

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

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

最佳答案

这听起来太复杂了。只需替换它的 WndProc(GWL_WNDPROC),什么也不转发,然后使 HWND 失效。这将强制重绘 (WM_PAINT),然后您可以捕获它。所有者可能甚至不会注意到(当然,除非他们也把它钩住了)

关于c# - 在运行时用另一个窗口控件替换窗口控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2426235/

相关文章:

c# - 在同一解决方案中找不到引用

c# - 方法组中泛型调用的 RealProxy Invoke Message 中的 TargetException

c++ - 测试字符串以查看是否存在数字并将值分配给变量同时跳过所有非数字值?

c++显示虚数部分为i的复数

c++ - CreateFile() 返回 INVALID_HANDLE_VALUE (C++)

c++ - POD 的 WinAPI union 双关语到基本类型 : Implementation dependent or standard compliant?

c# - Swashbuckle - 在 swagger 文档中将字符串视为枚举

c# - 使用 WCF 数据服务客户端库从 WCF 数据服务查询数据时发现有趣的问题

c++ - 如何在库项目中添加头文件和 cpp 文件

c++ - Win32 控制台写入 (C/C++)