⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.cpp

📁 PasswordViewer 是一个集察看屏保口令、Access数据库口令、CMOS口令、QQ2000口令、美萍网管口令、Win9x共享口令、Win9x缓存口令的软件
💻 CPP
字号:
// Search.cpp: implementation of the CSearch class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GameProbe.h"
#include "Search.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSearch::CSearch()
{
	m_dwTickTime = 0;
}

CSearch::~CSearch()
{

}

BOOL CSearch::BeginSearch()
{

	m_dwTickTime = 0;

	CleanResult();
	if(m_SearchResult.dwTimes == 1)
	{
		m_TempFile.Create("D:\\GameProbe.tmp");
		m_TempFile.SetHeader(&m_SearchResult);
	}
	else
	{
		CSearchResult OldResult;
		m_TempFile.Open("D:\\GameProbe.tmp");
		m_TempFile.GetHeader(&OldResult);
		m_dwFirstCount = OldResult.dwCount;
	}

	m_TempFile.SeekToDataBegin();

	OnBeginSearch();
	OnProgress(0, 100, 0);
	
	return TRUE;
}

BOOL CSearch::EndSearch()
{
	CSearchResult result;
	result = m_SearchResult;

	m_TempFile.Flush();

	OnProgress(0, 100, 100);

	OnEndSearch(&result);
	
	if(result.dwTimes != 1)result.dwCount = m_dwFirstCount;

	m_SearchResult.dwTimes++;
	
	m_TempFile.SeekToHeader();
	m_TempFile.SetHeader(&result);	
	m_TempFile.Close();

	return TRUE;

}

void CSearch::OnProgress(DWORD dwMin, DWORD dwMax, DWORD dwPos)
{

}


void CSearch::OnFound(DWORD dwAddress, DWORD dwCount)
{

}

BOOL CSearch::Create(CString strTempFile)
{
	Reset();
	return TRUE;
}

void CSearch::Release()
{

}

//在一个内存块中搜索内容
//成功返回位置
//失败返回-1
int CSearch::MemFind(int iStartPosition, LPBYTE pDestBuffer, int iDestBufferLength, LPBYTE pPatternBuffer, int iPatternBufferLength)
{
	
	signed int iFoundPosition, i;
	
	iFoundPosition = -1;
	if(iStartPosition > iDestBufferLength)return -1;
	
	for(i = iStartPosition; i < (iDestBufferLength + 1); i++)
	{
        if(memcmp(&pDestBuffer[i], pPatternBuffer, iPatternBufferLength) == 0)
        {
            iFoundPosition = i;
            break;
        }
    }
	return iFoundPosition;
}

void CSearch::DoOnFound(DWORD dwAddress)
{
	m_SearchResult.dwCount++;
	OnFound(dwAddress, m_SearchResult.dwCount);
}

void CSearch::Reset()
{
	m_SearchResult.dwTimes = 1;
	CleanResult();
	m_TempFile.Close();
	m_TempFile.Delete();
}

void CSearch::CleanResult()
{
	m_SearchResult.dwCount = 0;
	m_dwFirstCount = 0;
}

void CSearch::OnEndSearch(CSearchResult *pResult)
{

}

void CSearch::OnBeginSearch()
{

}

void CSearch::ProcessProgress(DWORD dwMin, DWORD dwMax, DWORD dwPos)
{
	DWORD dwTick = ::GetTickCount();
	if(dwTick - m_dwTickTime < 100)
	{
		m_dwTickTime = dwTick;
		return;
	}

	m_dwTickTime = dwTick;

	double pos, max, percent;
	pos = (double)dwPos;
	max = (double)dwMax;
	percent = pos / max * 1000000.0;
	OnProgress(0, 1000000, (DWORD)percent);

}

const CSearchResult *CSearch::GetResult()
{
	return &m_SearchResult;
}

⌨️ 快捷键说明

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