【发布时间】:2014-08-16 22:36:02
【问题描述】:
我想知道当新窗口出现/出现在桌面上时是否触发了任何事件。我愿意使用 COM、WMI、WinApis、UIAutomation 或任何其他方法,但选择的语言是 C#。
实际要求: 一个进程有 1 个主窗口和许多其他窗口。例如,其中一个窗口的类名是 X(我使用 pinvoke 获得了此信息)。现在,只要过程中有一些通知,这个窗口就会弹出几次。我不想显示这个窗口。我没有对该进程的代码访问权限,因此我可以禁用该窗口。那么有什么方法可以让我获得一个事件或任何其他机制来跟踪桌面,并且任何时候带有类名 X 的窗口出现/即将出现它都会隐藏它。
如果我不清楚这个问题,请告诉我。 谢谢
编辑:西蒙的回答非常好。我试过了,并且能够获得除通知/吐司窗口之外的所有窗口的通知,例如 lync 的即时吐司通知或 Outlook 新邮件通知。我尝试了自动化元素和 Windows 模式的不同元素,但仍然无法获得这些元素......我如何获得这些元素的任何想法......您可以阅读 Simon 的答案中的 cmets 以获取更多上下文/详细信息。再次感谢 Simon 介绍 UIAUtomation 的强大功能...喜欢它!
【问题讨论】:
-
我认为你可以使用UI Automation - 它支持
WindowOpened事件
标签: c# windows com wmi pinvoke