先声名只是为了学习 才写的阿 可是我的到的为什么是乱码呢? PROCESSENTRY32 pe32;//...
pe32.dwSize=sizeof(pe32);//..
BOOL bMore = 1;
HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//...
if(hProcessSnap==INVALID_HANDLE_VALUE)//...
{
MessageBox("df");
}
while(bMore)
{
bMore=Process32Next(hProcessSnap,&pe32);//...
if( strcmp( "QQ.EXE", pe32.szExeFile)==0 )
{
DWORD id=pe32.th32ProcessID;
CString strID;
strID.Format("qq进程id=%d",id);
m_list.AddString(strID);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false,id) ;
strID.Format("进程句柄=%d",hProcess);
m_list.AddString(strID);
//LPSYSTEM_INFO *lpSystemInfo=new LPSYSTEM_INFO;
SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
CString s;
s.Format("%d",sysInfo.lpMinimumApplicationAddress);
SetDlgItemText(IDC_EDIT1,s);
s.Format("%d",sysInfo.lpMaximumApplicationAddress);
SetDlgItemText(IDC_EDIT2,s); int int_min=GetDlgItemInt(IDC_EDIT1);
int int_max=GetDlgItemInt(IDC_EDIT2);
MEMORY_BASIC_INFORMATION lpBuffer;//
while(int_min<int_max)
{
// MessageBox("fg");
VirtualQueryEx(hProcess,(LPCVOID)int_min, &lpBuffer, sizeof(lpBuffer));
if(lpBuffer.Type==MEM_PRIVATE &&
lpBuffer.State==MEM_COMMIT &&
lpBuffer.AllocationProtect==PAGE_READWRITE)
{
DWORD dwWantRead=1024,dwHaveRead;
LPBYTE lpBuff=new BYTE[dwWantRead];
ReadProcessMemory(hProcess,// 被读取进程的句柄
lpBuffer.AllocationBase, // 读的起始地址
lpBuff, // 存放读取数据缓冲区
dwWantRead,// 一次读取的字节数
&dwHaveRead);// 实际读取的字节数
CString s;
s.Format("%s",lpBuff);
m_list2.AddString(s);
}
int_min+=lpBuffer.RegionSize;
}
}
}
CloseHandle(hProcessSnap);
}
解决方案 »
- 打开一个文件夹中的所有图片,怎样实现顺序是1、2、3……、100,而不是1、10、100、101……、99?
- 【求】vc wsaaysncselect的简单例子
- 急急急!!! 如何隐藏Ctreectrl的滚动条
- sdk 怎样得到所有的子窗体??
- 谁知道图形学中的monte carlo是怎么样的啊?能不能给我仔细解释下或给点资料啊?
- 问一个WinInet的问题(一直没人回答!各位拜托了!!谢!)
- 如何知道我的 自定义消息 的 传递路径 以及被 相应的函数接受到了 ?
- 一个字符数组的小问题,快来检分啊!
- VC怎么访问一个DLL
- 为什么下载只能下载到64k就出现同步错误???(TFTP客户端)
- 关于注册表
- VC编译错误
那必然是乱码,你从不知什么地址读了1024字节的数据,并且按照字符串来格式化s.Format("%s",lpBuff);
当然是乱七八糟的了,因为你读取的内容可能根本就不是字符串
如果你是想看读取的内存内容,你应该把数据按16进制格式化成字符串方便你阅读
如果你是想看到某些你想要的字符串,对不起你读错地方了