大家好 想实现一个功能 就是我获取到了一个LISTVIEW 的句柄  上面的组有 ID  开始地址 结束地址  有 10条记录,
我就问下 我有了这个句柄 我如何 获取 他每一行的信息 就这样简单,  

解决方案 »

  1.   

    http://msdn.microsoft.com/en-us/library/bb774737(VS.85).aspx
      

  2.   

    跨进程获取信息,思路如下
    1、OpenProcess目标进程
    2、在目标进程内VirtualAllocEx一块地方
    3、SendMessage发送消息,将获得的消息写入到刚开辟的空间中
    4、用ReadMemory读回来示例代码如下:if(hWnd)  
        {  
            HWND hList = ::FindWindowEx(hWnd, NULL, _T("SysListView32"), NULL);  
            if(hList)  
            {  
                DWORD PID = 0;  
                ::GetWindowThreadProcessId(hList, &PID);  
                HANDLE hProcess = ::OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);  
                if(hProcess)  
                {  
                    RECT rc = {0};  
                    RECT* pRect = NULL;  
                    pRect = (RECT*)::VirtualAllocEx(hProcess, NULL, sizeof(RECT), MEM_COMMIT, PAGE_READWRITE);  
                    if(NULL == pRect)  
                    {  
                        ::CloseHandle(hProcess);  
                        return ;  
                    }  
    // 这里得到CListCtrl控件的item = 2的RECT区域,即CListCtrl控件的第三行  
                    ::SendMessage(hList, LVM_GETITEMRECT, 2, (LPARAM)pRect);  
                    DWORD dwRead = 0;  
                    ::ReadProcessMemory(hProcess, pRect, &rc, sizeof(RECT), &dwRead);  
                    POINT pt = {0};  
                    pt.x = rc.left + (rc.right - rc.left) / 2;  
                    pt.y = rc.top + (rc.bottom - rc.top) / 2;  
                    ::SendMessage(hList, WM_LBUTTONDBLCLK, MK_LBUTTON, MAKELPARAM(pt.x, pt.y));  
                    ::VirtualFreeEx(hProcess, pRect, sizeof(RECT), MEM_RELEASE);  
                    ::CloseHandle(hProcess);  
                }             
            }  
        }  具体情况,请自行修改
      

  3.   

    CListView::GetListCtrl
    CListCtrl::SetItemText
      

  4.   

    有MFC的CListCtrl支持,使用CListCtrl::GetItemText获取各列的内容
    如没有MFC的CListCtrl支持,只有句柄的话,可考虑向句柄对应的窗口发送消息LVM_GETITEMTEXT。