检测特定进程何时创建窗口(在Windows上)

时间:2014-10-20 09:41:56

标签: windows

我有一个自动化并以隐形模式运行的应用程序。但是,我想检测该应用程序是否创建并显示任何窗口,以便我可以交互(或隐藏)它们。 我正在寻找一种方法来获取操作系统通知shell创建窗口的方法。 (我使用C#)

1 个答案:

答案 0 :(得分:0)

这可以通过创建系统范围的Windows挂钩来实现。 使用WH_SHELL作为挂钩ID调用SetWindowsHookEx。

在ShellProc回调函数中,只要创建窗口,nCode参数就会有HSHELL_WINDOWCREATED值。 然后我可以使用GetWindowThreadProcessId来检查wParam中提供的窗口句柄是否属于我感兴趣的进程。 但是必须在本机dll中实现,因为.NET程序集只能为WH_MOUSE_LL和WH_KEYBOARD_LL实现系统范围的挂钩。