繁体   English   中英

使用Win32 API挂钩获取新创建的窗口

[英]Get newly created window using Win32 API hooks

这可能是一个很长的空缺,甚至是不可能的,但是问问没有任何伤害。

我想做的是监视应用程序在其MDI控件中创建的任何新窗口。 我已经在C#中实现了钩子,并且可以捕获MDICREATE窗口消息,但是由于创建后需要获取有关窗口的信息,因此MDICREATE消息并没有太大帮助,因为在那个阶段尚未在其他窗口中创建窗口申请呢。

无需赘述,我只需要能够看到何时创建了新窗口。

这可能吗?

谢谢

我不知道有另一条消息可以获取您正在寻找的信息。 但是,如果该消息对您有用,则可以挂接该消息,然后对窗口进行另一次扫描以查找丢失的窗口。 您可以枚举父窗口的子窗口。 使用Spy ++查看确切的窗口层次结构。

如果您可以观看特定的函数调用,则可以使用某种挂钩库来抓取(想到了EasyHook)。

您可以挂钩MDI创建函数(假设有一个),注意这一点,然后编写您的代码,调用原始代码并使用返回的值进行任何查找。 您将有权访问返回的值和任何参数,因此您应该能够从中获取一些信息。

我头顶上有两个选择。

  1. 在第一次激活窗口时挂接WM_MDIACTIVATE事件,使用标志来确定第一次激活窗口。

  2. 如果需要在WM_MDICREATE或WM_MDIACTIVATE之后运行代码,则可以从这些消息之一中发布新的自定义消息,然后在这些消息完成之后进行处理。 然后,您编写代码以处理自定义消息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM