看流星社区

 找回密码
 注册账号
查看: 2521|回复: 1

我用VC++怎么把人物名字读出来?

[复制链接]

该用户从未签到

发表于 2011-3-17 14:24:05 | 显示全部楼层 |阅读模式
我用VC++怎么把人物名字读出来?
我用VC++怎么把人物名字读出来?

该用户从未签到

发表于 2011-3-17 14:24:30 | 显示全部楼层
BOOL CSelectGameDialog::OnInitDialog()  
{
   CDialog::OnInitDialog();
   
   
   // TODO: Add extra initialization here
   int i ;
   int theloop;
   //    Dim ret
   
   ;PROCESSENTRY32 proc;
   HANDLE snap,hProcess;
   CString exename;
   DWORD personBase;
   DWORD name_temp;
   DWORD ecx;
   char name[32];//人物名  
   WCHAR personname[32];//存储人物名称  
   BYTE nInsertPos;
   gBaseAddress=0x12f82c;
   snap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0) ;//获得进程“快照”的句柄  
   proc.dwSize = sizeof(proc);
   theloop = Process32First(snap, &proc) ;//获取第一个进程,并得到其返回值  
   i = 0;
   m_comboxUsername.Clear();
   while( theloop !=0 )//当返回值非零时继续获取下一个进程  
   {     
       exename = proc.szExeFile;
       if(strstr(exename, "elementclient")!=NULL)
    {
           hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, proc.th32ProcessID);
           if (hProcess)  
           {
               DWORD tempAddress;
               ReadProcessMemory(hProcess,(LPCVOID)gBaseAddress,&tempAddress, 4, 0);
               
               ReadProcessMemory(hProcess, (LPCVOID)(tempAddress + 0x24),&personBase, 4, 0) ;//   '得到为人物基地址,方便以后使用  
               ReadProcessMemory(hProcess,(void*)(tempAddress+8),&tempAddress,4,0);
               ReadProcessMemory(hProcess,(void*)(tempAddress+0x20),&ecx,4,0);
               ReadProcessMemory (hProcess, (LPCVOID)(personBase + 0x390), &name_temp, 4, 0);
               //personname(0) = 0
               ReadProcessMemory (hProcess, (LPCVOID)name_temp, personname, 32, 0); // '得到人物名称  
               WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,personname,-1,name,sizeof(name),NULL,NULL);
               nInsertPos=m_comboxUsername.GetCount();
   
               m_comboxUsername.InsertString(nInsertPos,name);
               strcpy(myprocessinfo[nInsertPos].name,name);
               myprocessinfo[nInsertPos].personBase=personBase;
               myprocessinfo[nInsertPos].ecx=ecx;
               myprocessinfo[nInsertPos].hProcess=hProcess;
               myprocessinfo[nInsertPos].pid=proc.th32ProcessID;            
               CloseHandle(hProcess);

           }
           //    i = i + 1
           //    End If
       }
       theloop = Process32Next(snap, &proc);
       //Wend
   }
   CloseHandle(snap);//关闭进程“快照”句柄  
//    if(nInsertPos>=0)
//    {
//        EnumStruct *pEnumStruct=new EnumStruct;
//        pEnumStruct->p=myprocessinfo;
//        pEnumStruct->number=nInsertPos+1;
//        pEnumStruct->NumOffound=0;
//        EnumWindows((WNDENUMPROC)myEnumWindows,(LPARAM)pEnumStruct);
//    }
   m_comboxUsername.SetCurSel(0);
   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-29 12:39

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表