zoukankan      html  css  js  c++  java
  • 获取其他进程Listctrl的数据

    //
    // http://www.codeproject.com/KB/threads/int64_memsteal.aspx
    //
    HANDLE InjectProcess(HWND listview)
    {
    	unsigned long pid;
    	HANDLE process;
    
    	GetWindowThreadProcessId(listview, &pid);
    
     process=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|
                         PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid);
    
    	return process;
     
    }
    
    void* MallocInPocess(HANDLE process, size_t size, void *def_val=NULL)
    {
    	void* p = VirtualAllocEx(process, NULL, size,
                                  MEM_COMMIT, PAGE_READWRITE);
    
    	if(def_val)
    		VERIFY(WriteProcessMemory(process, p, def_val, size, NULL));
    
    	return p;
    }
    
    void FreeInPocess(HANDLE process, void* _lvi)
    {
    	VirtualFreeEx(process, _lvi, 0, MEM_RELEASE);
    }
    
    CString CListCtrl_GetItemText(HWND m_hWnd, HANDLE hProcess, int nItem, int nSubItem)
    {
    	ASSERT(::IsWindow(m_hWnd));
    	
    	CString s;
    
    	//
    	// lvi
    	//
    	LVITEM lvi;
    	memset(&lvi, 0, sizeof(LVITEM));
    	lvi.iSubItem = nSubItem;
    	
    	const int nLen = 1280;
    	
    	int nRes;
    	lvi.cchTextMax = nLen;
    	
    	//memory
    	TCHAR *str = (TCHAR*)MallocInPocess(hProcess, nLen*sizeof(TCHAR));
    	if(!str)
    		return s;
    
    	lvi.pszText = str;
    
    	LVITEM *plvi = (LVITEM*)MallocInPocess(hProcess, sizeof(LVITEM), &lvi);
    	if(!plvi)
    		return s;
    
    	nRes  = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem,
    		(LPARAM)plvi);
    	
    	TCHAR str2[nLen];
    
    	VERIFY(ReadProcessMemory(hProcess, str, str2, 512, NULL));
    
    	s = str2;
    
    	FreeInPocess(hProcess, plvi);
    	FreeInPocess(hProcess, str);
    
    	return s;
    }
    
    void Ctest2Dlg::OnBnClickedButton1()
    {
    	HWND hMain = ::FindWindowEx(NULL,NULL,NULL,_T("test1"));
    	HWND hList = ::FindWindowEx(hMain, NULL , _T("SysListView32"), NULL);
    	ASSERT(hList);
    
    	CListCtrl List;
    	VERIFY(List.Attach(hList));
    	int nItem = List.GetItemCount();
    	int nCol = List.GetHeaderCtrl()->GetItemCount();
    
    	HANDLE hPoc = InjectProcess(hList);
    
    	for(int i=0; i<nItem; i++)
    	{
    		for(int j=0; j<nCol; j++)
    		{
    			CString szText = CListCtrl_GetItemText(hList,hPoc,i,j);
    			TRACE("%s\n", szText);
    			MessageBox(szText);
    		}
    	}
    
    	List.Detach();
    }
    
  • 相关阅读:
    OpenCV和PHP的人脸识别技术
    Nginx下防CC和DDOS攻击
    Centos 6.0 yum 更新源
    linux(centos) 常用命令
    在 Nginx 中配置 Zend Framework
    nginx虚拟主机配置实例
    mysql精简语句集
    nginx rewrite 参数和例子
    nginx 和 subversion
    ZendFramework,php编码规范
  • 原文地址:https://www.cnblogs.com/cutepig/p/2163238.html
Copyright © 2011-2022 走看看