这是一种GUI自动化应用程序,我希望从另一个进程读取listview中的数据。
listview类是SysListView32并且具有以下样式集LVS_OWNERDRAWFIXED
通常我可以使用以下程序从listview中读取文本
当listview不是ownerdrawn时,它工作正常,但在这种情况下,listview似乎是由所有者绘制的,即listitem没有数据。
是否可以通过我所讨论的方法或通过任何方法或通过挂钩API或任何方法从这样的列表视图中读取文本?
答案 0 :(得分:3)
控件仍必须将LVITEM添加到列表视图中。但当然没有义务在其中加入任何有用的东西。如果应用程序执行自己的绘图,则指定null pszText或iImage可以正常工作。它将实现WM_DRAWITEM消息处理程序并使用内部数据来呈现项目。
无法找出数据的存储位置。你可以伪造自己的WM_DRAWITEM消息,虽然它是非常很难做,因为你必须注入代码来创建HDC,但这只能获得像素,而不是字节。使用OCR将是一个主要的异常解决方案。实际上,你需要在这个上放弃。