我正在做一个打算像inspect.exe
一样运行的应用程序。我有一个可访问性元素的树视图,当用户在元素中导航时,可以按需查询这些元素。我现在想实现“监视光标”功能。
我可以使用AccessibleObjectFromPoint
获取当前悬停的元素。我可以调用IAccessible::get_accParent
,直到到达与树视图中显示的现有元素的交点。然而,从这个函数返回的对象与从这个属性返回的对象指针不同,它们与我的树视图中表示同一UI元素的对象指针不同。
如何比较两个元素并了解它们是否相等?
是否可以从IAccessible(或类似的接口)获得一些UID,用于唯一地标识元素?
1条答案
按热度按时间scyqe7ek1#
这就是
IAccIdentity::GetIdentityString
的作用。1.将
IUnknown::QueryInterface
用于IAccIdentity
(IID:{7852B78D-1CFD-41C1-A615-9C0C85960B5F}
)1.在返回的对象上调用
IAccIdentity::GetIdentityString
,并将dwIDChild
参数设置为0
1.对返回的缓冲区执行
memcmp
。另外,请记住在将标识字符串复制到内存中之后调用
CoTaskMemFree
。