找到哪个MDI孩子只关注Win32 API

时间:2010-01-16 04:18:34

标签: c# winapi hook

我有一个有MDI主机的程序,我希望能够让它中的哪个孩子得到焦点,贝斯维尔我想为这个应用程序做一个窗口焦点更改事件。

应用程序是第三方,我没有源代码,我有主程序和MDI主机部分的窗口句柄。

我知道我不得不使用Win32 API而不确定哪些。

我正在用C#编写我的应用程序

感谢。

1 个答案:

答案 0 :(得分:1)

我猜你正在寻找的是截取WM_SETFOCUSWM_KILLFOCUS条消息

真正的问题是你将如何做到这一点。我想简单的方法是安装一个hook,它是一个子程序,用于监视系统中的消息流量,并在它们到达目标窗口过程之前处理某些类型的消息。你是通过使用WH_CALLWNDPROC或WH_CALLWNDPROCRET类型的钩子使用SetWindowsHookEx winapi函数来实现的。在codeproject上发布了一些示例;还有一个关于msdn:How to set a Windows hook in Visual C# .NET

您的帖子中不太清楚的是您的代码在哪里运行:与MDI窗口在同一个进程中,还是单独的应用程序\服务?如果是,您还需要将代码注入远程进程。请查看此链接,详细了解如何执行此操作:Three Ways to Inject Your Code into Another Process

希望这有帮助,尊重