从SysListView32获取itemtext

时间:2011-10-18 08:04:50

标签: c# winapi listview sendmessage

我试图通过C#从另一个应用程序获取SysListView32中的文本。 我可以获得LVM_GETITEMCOUNT,但LVM_GETITEMW = 0x1000 + 13始终返回-1。我如何通过C#获取文本?我是新的。非常感谢!

        ParenthWnd = FindWindow(ParentClass, ParentWindow);
        if (!ParenthWnd.Equals(IntPtr.Zero))
        {
            zWnd = FindWindowEx(ParenthWnd, zWnd, zClass, zWindow);
            if (!zWnd.Equals(IntPtr.Zero))
            {
                int user = SendMessage(zWnd, LVM_GETITEMCOUNT, 0, 0);
            }

1 个答案:

答案 0 :(得分:2)

由于您正在使用另一个进程拥有的控件,因此您需要更加努力地读取和写入LVITEM内存。因此,您需要在该过程中读写内存。如果不致电ReadProcessMemoryWriteProcessMemory等等,您就无法做到这一点。

最常被引用的技术示例是此代码项目文章:Stealing Program's Memory。注意32/64位陷阱。