很久以前,我开发了一个测试自动化系统,遗憾的是当时存在的框架都无法实现。
关键功能之一是它能够利用标准 Win32 API(EnumWindows、FindWindowEx 等)查找 Win32 对话框并与之交互。
由于 Windows 8 的变化,一个团队最近引入了一个 WPF 应用程序,我开始了一项我认为很简单的任务,即查找窗口、枚举控件(查找 OK 按钮)并单击它。需要注意的是,我的系统不会调用被测应用程序。这是一个系统级事件,本质上我需要通过“确定”按钮“找到它”并“关闭它”,因为它采用的代码路径。
我很快意识到这并不像我想象的那么简单,但我知道它是可能的,因为使用 Snoop 我可以找到窗口并向下钻取控制树直到找到它。关于这个主题有很多问题,但它们都在同一个应用程序/应用程序域中。
就我而言,这是从一个完全独立的应用程序(.net 4)中发生的。我知道windows的标题,但其他的很少。
有谁知道如何实现 Snoop 本质上正在做的事情(找到一个窗口,获取其控件列表,通过某些标准遍历它以查找特定控件),然后模拟点击事件?