testctrldlg.cpp

来自「《Windows应用程序捆绑核心编程》配套源码」· C++ 代码 · 共 105 行

CPP
105
字号
// TestCtrlDlg.cpp : implementation file
//

#include "stdafx.h"
#include "TestCtrl.h"
#include "TestCtrlDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTestCtrlDlg dialog

CTestCtrlDlg::CTestCtrlDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTestCtrlDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTestCtrlDlg)
	m_strRead = _T("");
	m_strWrite = _T("");
	//}}AFX_DATA_INIT

	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestCtrlDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTestCtrlDlg)
	DDX_Text(pDX, IDC_READVALUE, m_strRead);
	DDX_Text(pDX, IDC_WRITEVALUE, m_strWrite);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTestCtrlDlg, CDialog)
	//{{AFX_MSG_MAP(CTestCtrlDlg)
	ON_BN_CLICKED(IDC_READ, OnRead)
	ON_BN_CLICKED(IDC_WRITE, OnWrite)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTestCtrlDlg message handlers

BOOL CTestCtrlDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CTestCtrlDlg::OnRead() 
{
	DWORD pid;

	HWND hWnd = ::FindWindow (NULL,TEXT("TestServer"));
	if(!hWnd)
	{
		AfxMessageBox("没有找到TestServer进程.");
		return;
	}

	::GetWindowThreadProcessId(hWnd, &pid );
	HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid);

	LPVOID lpBaseAddress=(LPVOID)0x12fee8;
	DWORD dwValue;

	if(!::ReadProcessMemory(hProcess ,
		lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0)) return;

    m_strRead.Format("%d",dwValue);
	UpdateData(FALSE);
}

void CTestCtrlDlg::OnWrite() 
{
	DWORD pid;

	HWND hWnd = ::FindWindow (NULL,TEXT("TestServer"));
	if(!hWnd)
	{
		AfxMessageBox("没有找到TestServer进程.");
		return;
	}

	::GetWindowThreadProcessId(hWnd, &pid );
	HANDLE hProcess = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,pid);

	LPVOID lpBaseAddress=(LPVOID)0x12fee8;

	UpdateData();
	DWORD dwValue=atoi(m_strWrite);

	if(!::WriteProcessMemory(hProcess ,
		lpBaseAddress,(void*)&dwValue,sizeof(DWORD),0)) return;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?