获取其他进程listctrl的内容


void CList_getDlg::OnBUTTONgetdata()
{
    // TODO: Add your control notification handler code here
    m_list_cmddatas.ResetContent();
    int item =m_combo_items.GetCurSel();
    HWND hListview = (HWND)m_combo_items.GetItemData(item);
    if(hListview==0){
        AfxMessageBox("itemdata error");
        return;
    }

    int count = (int)ListView_GetItemCount(hListview);  
    HWND hListviewHdr = ListView_GetHeader(hListview);
    int ncols = (int)Header_GetItemCount(hListviewHdr);  

    int i,nItem;  
    
    // 获取ListView行数  
    CString strTemp;  
 
    
    CString str1="";  
    CString str2="";  
    CString str3="";  
    CString str4="";  
    
    DWORD   pid;  
    HANDLE  process;  
    LVITEM  lvi, *_lvi;  
    char    firstitem[512], fifthitem[512];  
    char    *_firstitem ,*_fifthitem;  
    
    memset(firstitem,0,512);  
    memset(fifthitem,0,512);  
     
    // 获取窗口PID、打开进程  
    GetWindowThreadProcessId(hListview, &pid);  
    process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|  
        PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid);  
    
    // 申请内存空间  
    _lvi=(LVITEM*)VirtualAllocEx(process, NULL, sizeof(LVITEM),MEM_COMMIT, PAGE_READWRITE);  
    _firstitem=(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT,PAGE_READWRITE);  
    _fifthitem  =(char*)VirtualAllocEx(process, NULL, 512, MEM_COMMIT,PAGE_READWRITE);  
     lvi.cchTextMax=512;  
     int col_will_read = GetDlgItemInt(IDC_EDITcolumntoread);
     if((col_will_read>=ncols)||(col_will_read<0)){
         AfxMessageBox("para error");
         return ;
     }

    
    // 这里应该递减、保持与任务管理器一样顺序  
    for(i=count; i>=0; i--)  
    {  
        // 获取第一列记录  
        lvi.iSubItem=col_will_read;  
        lvi.pszText=_firstitem;  
        WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);  
        ::SendMessage(hListview, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);  
        
        // 获取第二列记录  
//         lvi.iSubItem=4;  
//         lvi.pszText=_fifthitem;  
//         WriteProcessMemory(process, _lvi, &lvi, sizeof(LVITEM), NULL);  
//         ::SendMessage(hListview, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_lvi);   
        
        // 读取进程内存  
        ReadProcessMemory(process, _firstitem,  firstitem,  512, NULL);  
 //        ReadProcessMemory(process, _fifthitem,  fifthitem,    512, NULL);  
        
        // 格式化字符串  
        str1.Format("%s",firstitem);  
          
        
        // 增加到列表  
        if(strlen(str1))
        m_list_cmddatas.AddString(str1);
        
    }  
    
    // 释放内存空间  
    VirtualFreeEx(process, _lvi,        0, MEM_RELEASE);  
    VirtualFreeEx(process, _firstitem,  0, MEM_RELEASE);  
 //    VirtualFreeEx(process, _fifthitem,    0, MEM_RELEASE);      
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值