我正在尝试通过IAccessible操作公共标题控件(单击列)。我有一段简单的代码,它适用于windows XP和win7,但对windows10没有任何作用。
CComPtr<IAccessible> iacc;
hr = AccessibleObjectFromWindow(hw, OBJID_CLIENT, IID_PPV_ARGS(&iacc));
CComVariant col(1); // try to click first column
#ifdef _DEBUG
LPDISPATCH pp = 0;
hr = iacc->get_accChild(col, &pp);
ATLASSERT(!pp); // no "real" child objects
CComBSTR bs;
hr = iacc->get_accDefaultAction(col, &bs); // returns CLICK
#endif
hr = iacc->accDoDefaultAction(col);
ATLASSERT(S_OK==hr);
// call succeeds but no HDN_ITEMCLICK sent!?非常简单,给定标题窗口句柄,获取可访问性接口,然后尝试按数字单击列(子项)。accDoDefaultAction返回S_OK,但listview控件不接收HDN_ITEMCLICK
我认为移植到windows10的某个阶段在头控制MSAA代码中引入了一个bug。
发布于 2018-02-23 07:18:29
UI自动化中的Invoke control pattern似乎工作正常。不确定这是故意的还是MSAA/UIA网桥中的错误。如果您支持广泛的目标,那么您唯一的选择就是同时尝试这两种方法。
https://stackoverflow.com/questions/48900989
复制相似问题