c++ - 子类化另一个应用程序的控件?

标签 c++ c winapi

是否可以子类化另一个应用程序的控件,以便我的应用程序可以在另一个应用程序执行其代码并接收 lParam 和 wParam 之前执行某些操作?例如:子类化记事本的编辑控件,当用户键入时,能够知道用户键入的内容?如果我提供记事本编辑控件的 hWnd,SetWindowSubclass 会工作吗?我会收到所有消息的 lParam 和 wParam 吗?

谢谢

最佳答案

是的,如果您的代码在应用程序的进程中运行,那么这很容易实现。您可以使用 DLL 来做到这一点。您只需使用 GetWindowLongPtr使用 GWLP_WNDPROC 获取应用程序的窗口函数,并使用 SetWindowLongPtr设置你自己的。在窗口函数中,您检查要更改的消息,并使用更改后的值调用应用程序的窗口函数。如果有任何其他消息,您必须直接调用。使用CallWindowProc调用窗口函数,因为默认的窗口函数不是指针。

另一种方法是使用 CallWndProc钩子(Hook)函数。调用SetWindowsHookEx使用 WH_CALLWNDPROC 来安装它。虽然还没有尝试过这个,但你不需要在进程的空间中,IIRC。

关于c++ - 子类化另一个应用程序的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129375/

相关文章:

c 读取字符串导致崩溃

c++ - 简化嵌入式系统中的位(引脚)操作

c++ - 为什么小负载神经网络和大负载神经网络占用相同数量的 RAM?

c++ - boost中的path::string()和path::generic_string()有什么区别?

C 为双指针赋值

C++ 异常处理问题

c - 从编辑框获取文本

c++ - 枚举所有注册表项的最有效方法

c++ - 用不同的字符串(UVa 272 - Tex 引号)替换打开和关闭的代码不起作用

c++ - 从句柄获取文件路径