如何检测我的应用程序窗口何时由用户明确激活

问题描述:

我需要知道用户何时明确激活了我的应用程序,即我的应用程序允许用户打开办公文档,办公室窗口变为活动状态时,我的应用程序的窗口变为停用状态。我需要知道的是用户何时通过Alt + Tab或通过任务栏重新激活我的应用程序的窗口。如何检测我的应用程序窗口何时由用户明确激活

我试过使用WM_NCACTIVATEWM_ACTIVATEAPP消息,但是这些消息在很多其他情况下都会抛出。有没有办法通过这些或其他信息获取这些信息?

感谢, 若泽•佩德罗·塔瓦雷斯

你为什么不使用从形式Activated事件?

+0

嗯..它很复杂:) 我的代码注入其他WinForm应用程序,所以我可以在应用程序中记录事件。在代码中显式调用Activate时,表单中的Activated事件也会启动,并且我不想在这种情况下进行记录。获取作为应用程序一部分的窗口的句柄并不容易。所以我的解决方案,为了最终,最大限度地减少事件,为win32事件安装钩子并处理它们。我正在寻找激活事件的类似解决方案。 – jpsstavares 2010-05-10 09:28:30

+0

当在API中激活事件时,这也会是你的问题。我想解决你的问题(比如设置一个开关“dontrecordnextactivate”或类似的东西),因为API或本地代码的基本原理保持不变。 – riffnl 2010-05-10 13:25:34

+0

抱歉延迟应答。这是正确的我有与API事件相同的问题,但我不能得到应用程序中的每个窗口的句柄,因为它们出现,所以我认为通过API会更容易。我无法得到句柄的原因是因为我的代码是在第三方应用程序中注入的,因此我不知道会有多少个窗口以及它们的行为。 – jpsstavares 2010-05-14 10:40:00