句柄获取消息 大家好 想实现一个功能 就是我获取到了一个LISTVIEW 的句柄 上面的组有 ID 开始地址 结束地址 有 10条记录,我就问下 我有了这个句柄 我如何 获取 他每一行的信息 就这样简单, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn.microsoft.com/en-us/library/bb774737(VS.85).aspx 跨进程获取信息,思路如下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); } } } 具体情况,请自行修改 CListView::GetListCtrlCListCtrl::SetItemText 有MFC的CListCtrl支持,使用CListCtrl::GetItemText获取各列的内容如没有MFC的CListCtrl支持,只有句柄的话,可考虑向句柄对应的窗口发送消息LVM_GETITEMTEXT。 千千静听的换肤实现 仍旧是CEditView中输出文字的问题 工具栏添加内存位图 编译出错:'asnparser' 不是内部或外部命令,也不是可运行的程序 急,在vc6.0中用oledb调用excel的问题! 画图的小问题 如何用编辑框显示一些如产品序列号,硬伯版本号等号码. c++程序问题? 麻烦介绍几个外国的VC论坛 一个怪现象,向各位高手讨教。请帮助我。很惭愧,分不多。谢谢! 关于创建管道读取telnet下命令传回值的问题 DLL问题请教
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);
}
}
} 具体情况,请自行修改
CListCtrl::SetItemText
如没有MFC的CListCtrl支持,只有句柄的话,可考虑向句柄对应的窗口发送消息LVM_GETITEMTEXT。