Windows标头控件和MSAA

时间:2018-02-21 08:17:20

标签: listview winapi windows-10 accessibility atl

我正在尝试通过IAccessible操作公共标头控件(单击一列)。我有这个简单的代码片段,适用于Windows XP和win7,但对于Windows 10,它什么都不做

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

我想在某个阶段Windows 10的端口引入了标题控件MSAA代码中的错误

1 个答案:

答案 0 :(得分:0)

UI自动化中的Invoke control pattern似乎正常工作。不确定这是设计还是MSAA / UIA网桥中的错误。如果您支持广泛的目标,您唯一的选择是尝试这两种方法。