C语言 MSAA -如何检查两个自动化元素是否指向同一个对象?

d7v8vwbk  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(148)

我正在做一个打算像inspect.exe一样运行的应用程序。我有一个可访问性元素的树视图,当用户在元素中导航时,可以按需查询这些元素。我现在想实现“监视光标”功能。
我可以使用AccessibleObjectFromPoint获取当前悬停的元素。我可以调用IAccessible::get_accParent,直到到达与树视图中显示的现有元素的交点。然而,从这个函数返回的对象与从这个属性返回的对象指针不同,它们与我的树视图中表示同一UI元素的对象指针不同。
如何比较两个元素并了解它们是否相等?
是否可以从IAccessible(或类似的接口)获得一些UID,用于唯一地标识元素?

scyqe7ek

scyqe7ek1#

这就是IAccIdentity::GetIdentityString的作用。
1.将IUnknown::QueryInterface用于IAccIdentity(IID:{7852B78D-1CFD-41C1-A615-9C0C85960B5F}
1.在返回的对象上调用IAccIdentity::GetIdentityString,并将dwIDChild参数设置为0
1.对返回的缓冲区执行memcmp
另外,请记住在将标识字符串复制到内存中之后调用CoTaskMemFree

相关问题