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



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

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

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

最新更新