c - 使用纯 C 检索 UI 元素的活动辅助功能名称
问题描述
目标:使用纯 C 检索 UI 元素的 Microsoft 活动可访问性名称
到目前为止我的代码:
IUIAutomationLegacyIAccessiblePattern *legacy = NULL;
BSTR element_aaname = NULL;
CoInitialize(NULL);
EXTERN_C const CLSID CLSID_CUIAutomation;
EXTERN_C const IID IID_IUIAutomation;
HRESULT hr = CoCreateInstance(&CLSID_CUIAutomation,NULL, CLSCTX_INPROC_SERVER,&IID_IUIAutomation,(void**)&pAutomation);
if(SUCCEEDED(hr)){
hr = IUIAutomationLegacyIAccessiblePattern_get_CurrentName(legacy,&element_aaname);
if(SUCCEEDED(hr)){
}
IUnknown_Release(legacy);
}
CoUninitialize();
问题:我没有得到任何价值,我想知道如何分配element_aaname="Not found"
以验证该功能是否有效。我真的很感谢你的帮助。
解决方案
在检查了相应的文档后,我找到了方法。我必须检索并传递 Ui 元素,这样我可以检索 LegacyIAccessible.Name:
IUIAutomation *pAutomation = NULL;
IUIAutomationElement *element = NULL;
BSTR element_aaname = NULL;
CoInitialize(NULL);
EXTERN_C const CLSID CLSID_CUIAutomation;
EXTERN_C const IID IID_IUIAutomation;
HRESULT hr = CoCreateInstance(&CLSID_CUIAutomation,NULL, CLSCTX_INPROC_SERVER,&IID_IUIAutomation,(void**)&pAutomation);
if(SUCCEEDED(hr)){
GetCursorPos(&pt);
hr = IUIAutomation_ElementFromPoint(pAutomation, pt, &element);
if(SUCCEEDED(hr) && element != NULL){
hr = IUIAutomationLegacyIAccessiblePattern_get_CurrentName(element,&element_aaname);
if(SUCCEEDED(hr)){
}
}
}
推荐阅读
- azure - ModuleClient 直接方法连接停止工作
- haskell - Haskell 列表函数
- wordpress - 在 WordPress.org 上,下载次数是如何工作的?
- kotlin - 如何在 Kotlin 中扩展枚举?
- gmail - 如何使用 JavaMailSender 使用 gmail 的“机密模式”
- python - 如何读取多个excel文件并加载到一张excel表中
- java - 将视图与现有视频合并
- linux - 将文件中的一列复制为另一个文件中的第一列
- javascript - 单击按钮时启动文本动画,如果再次单击按钮,则清除并再次启动动画
- sapui5 - 如何使用 SAP UI5 生成 OTP 和验证?