读取其他应用程序中ListView中的内容

翻译 2013年12月02日 10:22:24

    const nMaxLen=1023;
    char szBuf[nMaxLen+1];

    int          nLVItemCount;
    DWORD        dwProcessID;
    HANDLE       hProcess;
    LVITEM       lvItemLocal;
    DWORD        dwBytesRead, dwBytesWrite;
    bool         bSuccess,bWriteOK;

    GetWindowThreadProcessId(hWindow,&dwProcessID);
    hProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID);
    if(!hProcess)  //得不到指定进程的句柄
        return;
    //在指定进程内分配存储空间
    LPVOID lpTextRemote=VirtualAllocEx(hProcess,NULL,nMaxLen+1,MEM_COMMIT,PAGE_READWRITE);
    LPVOID lpListItemRemote=VirtualAllocEx(hProcess,NULL,sizeof(LVITEM),MEM_COMMIT,PAGE_READWRITE);
    if((!lpTextRemote) || (!lpListItemRemote)) //不能在指定进程内分配存储空间
        return;

    nLVItemCount=ListView_GetItemCount(hWindow);

    for(int i=0;i<nLVItemCount;i++)
    {
        ZeroMemory(szBuf,nMaxLen+1);
        bWriteOK= WriteProcessMemory(hProcess,lpTextRemote,(LPVOID)szBuf,nMaxLen+1,(LPDWORD)&dwBytesWrite);
        if(!bWriteOK) //写内存错误
            return;
        lvItemLocal.iItem=i;
        lvItemLocal.iSubItem=0;
        lvItemLocal.mask=LVIF_TEXT;
        lvItemLocal.cchTextMax=nMaxLen;
        lvItemLocal.pszText=(LPTSTR)lpTextRemote;
        dwBytesWrite=0;
        bWriteOK=WriteProcessMemory(hProcess,lpListItemRemote,(LPVOID)&lvItemLocal,sizeof(LVITEM),(LPDWORD)&dwBytesWrite);
        if(!bWriteOK) //写内存错误
            return;

        SendMessage(hWindow,LVM_GETITEMTEXT,(WPARAM)i,(LPARAM)lpListItemRemote);
        bSuccess=ReadProcessMemory(hProcess,lpTextRemote,szBuf,nMaxLen+1,&dwBytesRead);
        //从指定进程存储空间读取文本
        if(!bSuccess) //不能在指定进程内读取文本

            return;

//获取到指定值

        CString str;

    str.Format("%s",szBuf);


    }//end of for(i)
    //在指定进程内释放存储空间
    VirtualFreeEx(hProcess,lpListItemRemote,0,MEM_RELEASE);
    VirtualFreeEx(hProcess,lpTextRemote,0,MEM_RELEASE);
    //关闭指定进程句柄
    CloseHandle(hProcess);

相关文章推荐

day20打印流,删除一个带内容的目录,用于记录应用程序运行次数,多个读取流变成一个读取流,切割文件

/* 打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印 字节打印流 PrintStream 构造函数可以接收的参数类型 1.file对象 file 2.字符串路径。S...

vc++简单应用程序,文本内容复制

  • 2014年03月21日 11:12
  • 3.33MB
  • 下载

提升web应用程序的性能- 找出瓶颈,加快客户端内容的速度

简介: 作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要。本文将帮助您更好地理解影响 web 应用程序性能的因素。学习识别这些问题并且找到客户端内容的瓶颈。探索 JavaScript、...
  • yp120yp
  • yp120yp
  • 2012年02月07日 16:07
  • 588

应用程序架构本质,第 1 部分: 关于需求建模您所需要了解的所有内容

确定需求可能是非常困难的。通常,现有应用程序的操作包含了业务流程的各种需求,使其成为了设计或者实现更改的等价物。例如,“我们需要向表 XYZ 中添加一列以存储客户代码”,这一需求并没有说明为什么需要这...

Android App关于应用程序升级的一点内容

1.设计思路,使用VersionCode定义为版本升级参数。   android为我们定义版本提供了2个属性: 1 manifest package="com.cn...

Android开发笔记(3) 应用程序之间内容分享详解

应用程序之间内容分享详解
  • Leytton
  • Leytton
  • 2014年07月26日 22:39
  • 943

Android 应用程序之间内容分享详解(一)

一个Andoird应用程序的重要的地方是他们有相互沟通和整合的能力,一个应用程序可以和另一个应用程序交互,接下来我们来看看Android应用之间的内容分享 一、分享内容到其他应用程序 当你构建Inte...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取其他应用程序中ListView中的内容
举报原因:
原因补充:

(最多只允许输入30个字)