我有一个自动化并以隐形模式运行的应用程序。但是,我想检测该应用程序是否创建并显示任何窗口,以便我可以交互(或隐藏)它们。 我正在寻找一种方法来获取操作系统通知shell创建窗口的方法。 (我使用C#)
答案 0 :(得分:0)
这可以通过创建系统范围的Windows挂钩来实现。 使用WH_SHELL作为挂钩ID调用SetWindowsHookEx。
在ShellProc回调函数中,只要创建窗口,nCode参数就会有HSHELL_WINDOWCREATED值。 然后我可以使用GetWindowThreadProcessId来检查wParam中提供的窗口句柄是否属于我感兴趣的进程。 但是必须在本机dll中实现,因为.NET程序集只能为WH_MOUSE_LL和WH_KEYBOARD_LL实现系统范围的挂钩。