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

📄 registry.cpp

📁 一个邮件客户端源代码,包括收发邮件,安排日程等很多内容
💻 CPP
字号:
// CRegistry implementation

#include "stdafx.h"
#include "registry.h"

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

CRegistry::CRegistry()
{}
CRegistry::~CRegistry()
{}
LPCTSTR CRegistry::GetValueString(HKEY RegSection, LPCTSTR RegPath, 
		LPCTSTR Value, LPCTSTR DefRes)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_READ, &key);
	if (res!=ERROR_SUCCESS)
		return DefRes;
	char szBuf[4096];
	DWORD dwSize=sizeof(szBuf)-1;
	res=::RegQueryValueEx(key, Value,NULL, NULL, 
		(LPBYTE)szBuf, &dwSize);
	::RegCloseKey(key);
	if (res!=ERROR_SUCCESS)
		return DefRes;
	m_sResult=szBuf;
	return m_sResult;
}
int CRegistry::GetValueInt(HKEY RegSection, LPCTSTR RegPath, 
		LPCTSTR Value, int DefRes)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_READ, &key);
	if (res!=ERROR_SUCCESS)
		return DefRes;
	DWORD dwBuf;
	DWORD dwSize=sizeof(dwBuf);
	res=::RegQueryValueEx(key, Value,NULL, NULL, 
		(LPBYTE)&dwBuf, &dwSize);
	::RegCloseKey(key);
	if (res!=ERROR_SUCCESS)
		return DefRes;
	return (int)dwBuf;
}
BOOL CRegistry::SetValueInt(HKEY RegSection, LPCTSTR RegPath, 
		LPCTSTR Value, int Val)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_WRITE, &key);
	if (res!=ERROR_SUCCESS)
		return FALSE;
	DWORD dwBuf=(DWORD)Val;
	DWORD dwSize=sizeof(dwBuf);
	long ret=::RegSetValueEx(key, Value,0, REG_DWORD, 
		(LPBYTE)&dwBuf, dwSize);
	::RegCloseKey(key);
	if (ret!=ERROR_SUCCESS)
		return FALSE;
	return TRUE;
}
BOOL CRegistry::SetValueString(HKEY RegSection, LPCTSTR RegPath, 
		LPCTSTR Value, LPCTSTR Str)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_WRITE, &key);
	if (res!=ERROR_SUCCESS)
		return FALSE;
	DWORD dwSize=_tcslen(Str);
	long ret=::RegSetValueEx(key, Value,0, REG_SZ, 
		(LPBYTE)Str, dwSize);
	::RegCloseKey(key);
	if (ret!=ERROR_SUCCESS)
		return FALSE;
	return TRUE;
}
BOOL CRegistry::EnumKeys(HKEY RegSection, LPCTSTR RegPath, CStringArray* pAr)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_READ, &key);
	if (res!=ERROR_SUCCESS)
		return FALSE;
	LPTSTR str = new TCHAR[4096];
	LPTSTR szBuf=str;
	LPTSTR pStr=szBuf;
	int cbBufLen=4096;
	DWORD dwCount=0;
	DWORD nOffs=0;
	DWORD dwSize=cbBufLen;
	DWORD dwTotal=cbBufLen;
	while (TRUE)
	{
		res=::RegEnumKeyEx(key, dwCount, szBuf, &dwSize,
			NULL, NULL, NULL, NULL);
		if (res==ERROR_NO_MORE_ITEMS)	// done
			break;
		if (res!=ERROR_SUCCESS)
		{
			::RegCloseKey(key);
			delete str;
			return FALSE;
		}
		nOffs=dwSize+1;	// for zero
		szBuf+=nOffs;
		dwTotal-=nOffs;
		dwSize=dwTotal;
		dwCount++;
	}
	::RegCloseKey(key);
	int nSize=dwCount;
	pAr->SetSize(nSize);
	while(--nSize>=0)
	{
		pAr->SetAt(nSize, pStr);
		pStr+=_tcslen(pStr);
		pStr++;
	}
	delete str;
	return TRUE;
}
BOOL CRegistry::EnumValues(HKEY RegSection, LPCTSTR RegPath, CStringArray* pAr)
{
	HKEY key;
	long res=::RegOpenKeyEx(RegSection, RegPath,0,
		KEY_READ, &key);
	if (res!=ERROR_SUCCESS)
		return FALSE;
	LPTSTR str = new TCHAR[4096];
	LPTSTR szBuf=str;
	LPTSTR pStr=szBuf;
	int cbBufLen=4096;
	DWORD dwCount=0;
	DWORD nOffs=0;
	DWORD dwSize=cbBufLen;
	DWORD dwTotal=cbBufLen;
	while (TRUE)
	{
		res=::RegEnumValue(key, dwCount, szBuf, &dwSize, 
			NULL, NULL, NULL, NULL);
		if (res==ERROR_NO_MORE_ITEMS)	// done
			break;
		if (res!=ERROR_SUCCESS)
		{
			::RegCloseKey(key);
			delete str;
			return FALSE;
		}
		nOffs=dwSize+1;	// for zero
		szBuf+=nOffs;
		dwTotal-=nOffs;
		dwSize=dwTotal;
		dwCount++;
	}
	::RegCloseKey(key);
	int nSize=dwCount;
	pAr->SetSize(nSize);
	while(--nSize>=0)
	{
		pAr->SetAt(nSize, pStr);
		pStr+=_tcslen(pStr);
		pStr++;
	}
	delete str;
	return TRUE;
}

⌨️ 快捷键说明

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