我做一个工具,读取另外一个程序的窗口里一个 ListView 控件的内容,用 SendMessage 发送 LVM_GETITEMW 消息可以获得控件的 item 内容,子项(subitem)内容也能得到,发送 LVM_GETITEMPOSITION 消息可以读到 item 的坐标信息,但是子项(subitem)的坐标信息却怎么也没办法取到,哪位前辈做过类似的东西吗?给点提示,多谢多谢

解决方案 »

  1.   

    得到SubItem的信息,为什么还要POS啊?每一行是有一个Index的,你既然都知道这么多内容,
    应该发消息,发送index,然后获得SubItem的内容。但是真正的问题好像不是这些哦
    你得在对方进程分配内存,并且要写内存,而且你要ReadProcessMemory吧?
      

  2.   

    没有句柄所以拿不到信息
    如果两个程序都是你做的话,可以用socket进行通讯
      

  3.   

    用LVM_GETSUBITEMRECT读取子项的坐标位置
    http://msdn.microsoft.com/en-us/library/bb761075%28VS.85%29.aspx
      

  4.   

    目标程序不是我的,所以没办法控制,只能从这边读另外,ListView 的句柄我也得到了,ListView 所有 item 和 subitem 的内容我也得到了,item 的坐标也能得到,就是 subitem 的坐标没办法得到。就是不知道改如何用 LVM_GETSUBITEMRECT 消息得到 subitem 的坐标,谁能指导一下,最好给点代码,多谢,只要关键点就行
      

  5.   

    另外:我试过了直接用 sendmessage 传 LVM_GETSUBITEMRECT 和 RECT 参数过去,会引起目标程序崩溃;这个方法获取同一个进程的 ListView 的 subitem 坐标倒是可以,别的程序的就……
      

  6.   


    我这不是没辙了吗,但凡有办法也不这么干啊,我现在只能在 Spy++ 里抓一个坐标固定写进去,这样界面上的 ListView 只要被人手动调整过就完蛋了。