uia的c++教程,轻松控制别的程序
UIA是UI Automation,是微软提供的一套自动化接口。具体是什么意思。通俗的将,就是微软的标准控件都实现一个接口,使使用UIA编程的程序可以控制这个控件。如果是自绘的控件实现相应接口也可以让UIA的程序控制。
举例来说。
你写个mfc程序,有个button,内容是弹一个MessageBox。你想领写个程序去间接调用这个button。学外挂的熟悉,就是注入找call。但我们使用UIA可以很轻松实现。
UIA编程msdn上也很详细,不过大部分都是.net,c++例子很少,而且是英文。我这里就简单实现个例子。
这次例子是调用这个Button。
UIA把所有可调用控件元素都是一个树形式保存的,具体可以以用Inspect.exe查看,这个sdk带的小软件。你打开后把鼠标移到相应位置可以得到该控件相应信息。如果不是微软标准控件而且没有实现他的接口就没办法了。如图就是,我们要调用button4按钮。

第一步 需要 实现IUIAutomation 接口
他可以用于以下
1,注册事件
2,建立条件,使减少搜索控件元素范围。
3,直接从root节点获得控件元素。
4,建立元素 树遍历
5,转换数据类型
代码
CoCreateInstance(CLSID_CUIAutomation, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&g_pIUAutomation));
这个接口是老大。IUIAutomation一些方法可以直接获得控件元素
?IUIAutomation::GetFocusedElement ,?IUIAutomation::GetRootElement
然后可以用IUIAutomationElement::FindFirst?和FindAll. 搜索自控件。
第二步 实现IUIAutomationElement,
可以理解为每个控件都可以是IUIAutomationElement。我们调用button就用他的ivoke方法
IUIAutomationCondition 是条件搜索。控件一大堆,想搜到我们想要的靠他。
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
