从单独的进程中枚举/与WPF窗口和控件进行交互

本文关键字:窗口 控件 交互 WPF 单独 进程 枚举 | 更新日期: 2023-09-27 18:08:56

很久以前,我开发了一个测试自动化系统,不幸的是当时存在的框架都无法实现。

其中一个关键功能是它能够利用标准的Win32 API (EnumWindows, findwindowwex等…)查找和与Win32对话框交互。

由于Windows 8的变化,一个团队最近引入了一个WPF应用程序,我开始了我认为是一个简单的任务,找到窗口,列举控件(寻找OK按钮),然后点击它。需要注意的是,我的系统不会调用测试中的应用程序。这是一个系统级事件,本质上我需要通过OK按钮"找到它"answers"关闭它",因为它需要的代码路径。

我很快意识到这并不像我想象的那么简单,但我知道这是可能的,因为使用Snoop,我既可以找到窗口,又可以向下钻取控制树,直到找到它。关于这个话题有很多问题,但它们都在同一个应用/应用领域。

在我的例子中,这是发生在一个完全独立的应用程序(.net 4)。我知道windows的标题,但很少。

有谁知道如何实现本质上Snoop正在做的事情(找到一个窗口,得到它的控件列表,遍历它寻找一个特定的控件的一些标准),然后模拟点击事件?

从单独的进程中枚举/与WPF窗口和控件进行交互

我从未使用过它,但你可能正在MSDN上寻找这个页面。

从页面:

Microsoft UI Automation是新的可访问性框架微软的Windows。它解决了辅助技术的需求产品和自动化测试框架通过提供程序化的访问有关用户界面(UI)的信息。此外,UI自动化使控制和应用程序开发人员能够做出他们的产品容易。