Winapi Can';t使用SetWinEventHook显示事件的捕获窗口

Winapi Can';t使用SetWinEventHook显示事件的捕获窗口,winapi,hook,accessibility,Winapi,Hook,Accessibility,我正在使用SetWinEventHook功能监控窗口的出现和消失,即变得可见和隐藏,使用的代码与Raymond Chen在其文章中提供的代码类似 到目前为止,这种方法适用于所有窗口,但我偶然发现了一个程序,它并没有如图所示被报告。这是Kuwo 2014安装程序,您可以获得 为什么没有被报道?它有什么特别之处?正确的检测方法是什么 下面是一个示例,包含源代码和二进制代码。它与Raymond Chen文章中的非常相似,只是它只捕获顶级窗口 下面是一个屏幕截图,演示了该问题: 这是特定于此安装程序还是

我正在使用
SetWinEventHook
功能监控窗口的出现和消失,即变得可见和隐藏,使用的代码与Raymond Chen在其文章中提供的代码类似

到目前为止,这种方法适用于所有窗口,但我偶然发现了一个程序,它并没有如图所示被报告。这是Kuwo 2014安装程序,您可以获得

为什么没有被报道?它有什么特别之处?正确的检测方法是什么

下面是一个示例,包含源代码和二进制代码。它与Raymond Chen文章中的非常相似,只是它只捕获顶级窗口

下面是一个屏幕截图,演示了该问题:


这是特定于此安装程序还是任何安装程序(或一般提升的应用程序)?我怀疑您可能遇到了一些UIPI问题。@EricBrown,看起来它是这个安装程序(它的主窗口)特有的。提升的应用程序会被捕获到日志中。如您所见,确认对话框记录为显示和隐藏。该窗口也被记录为隐藏,但没有显示。我检查了您的代码,这一行
if(hwnd==get祖先(hwnd,GA_ROOT))
似乎有点问题;特别是,如果窗口是一个弹出窗口,它可能返回错误的值。如果有
if(NULL==GetParent(hwnd))
,会发生什么?@EricBrown,删除该行后,窗口不会显示在列表中。它的子控件出现,但主窗口没有。这是哪个操作系统版本?安装程序可能正在使用一些其他API,这些API不会生成事件\对象\显示(例如,可能是事件\对象\取消锁定);我会看看所有的事件,看看发生了什么。