📄 proinfodlg.cpp
字号:
// ProInfoDlg.cpp : implementation file
//
#include "stdafx.h"
#include "ProcessEnum.h"
#include "ProInfoDlg.h"
#include "resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CProInfoDlg dialog
CProInfoDlg::CProInfoDlg(CWnd* pParent /*=NULL*/,HANDLE id)
: CDialog(CProInfoDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CProInfoDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
hProcess=id;
}
void CProInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CProInfoDlg)
DDX_Control(pDX, IDC_LIST_INFO, m_InfoList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CProInfoDlg, CDialog)
//{{AFX_MSG_MAP(CProInfoDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProInfoDlg message handlers
BOOL CProInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_InfoList.InsertColumn(0,"基地址",LVCFMT_LEFT,150,-1);
m_InfoList.InsertColumn(1,"保护属性",LVCFMT_LEFT,150,-1);
m_InfoList.InsertColumn(2,"区域大小",LVCFMT_LEFT,150,-1);
m_InfoList.InsertColumn(3,"状态",LVCFMT_LEFT,150,-1);
m_InfoList.InsertColumn(4,"类型",LVCFMT_LEFT,150,-1);
int itemIndex=0;
LPCVOID lpAddress=0x00000000;
MEMORY_BASIC_INFORMATION pi;
while(VirtualQueryEx(hProcess,lpAddress,&pi,sizeof(pi))==sizeof(pi))
{
char temp[32]={0};
sprintf(temp,"%p",pi.BaseAddress);
m_InfoList.InsertItem(itemIndex,temp);
sprintf(temp,"%s",GetChar(pi.AllocationProtect));
m_InfoList.SetItemText( itemIndex,1,temp);
sprintf(temp,"%u",pi.RegionSize);
m_InfoList.SetItemText( itemIndex,2,temp);
sprintf(temp,"%s",GetChar(pi.State));
m_InfoList.SetItemText( itemIndex,3,temp);
sprintf(temp,"%s",GetChar(pi.Type));
m_InfoList.SetItemText( itemIndex,4,temp);
lpAddress=(char*)lpAddress+pi.RegionSize;
itemIndex++;
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
char * CProInfoDlg::GetChar(DWORD dw)
{
switch(dw)
{
case PAGE_READONLY:return "PAGE READONLY";
case PAGE_READWRITE:return "PAGE READWRITE";
case PAGE_WRITECOPY:return "PAGE WRITECOPY";
case PAGE_EXECUTE:return "PAGE EXECUTE";
case PAGE_EXECUTE_READ:return "PAGE EXECUTE READ";
case PAGE_EXECUTE_READWRITE:return "PAGE EXECUTE READWRITE";
case PAGE_EXECUTE_WRITECOPY:return "PAGE EXECUTE WRITECOPY";
case PAGE_NOACCESS:return "PAGE NOACCESS";
case PAGE_NOCACHE:return "PAGE NOCACHE";
case MEM_COMMIT:return "MEM COMMIT";
case MEM_FREE:return "MEM FREE";
case MEM_RESERVE:return "MEM RESERVE";
case MEM_IMAGE:return "MEM IMAGE";
case MEM_MAPPED:return "MEM MAPPED";
case MEM_PRIVATE:return "MEM PRIVATE";
}
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -