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

📄 registry.cpp

📁 Crimson编辑器的英文版,完成从韩文版变成英文版的移植,并且附带可执行文件和注册表文件,无需原先的安装包,是改写编辑器的最理想选择.
💻 CPP
字号:
#include "stdafx.h"
#include "registry.h"


BOOL GetRegKeyValue(HKEY hRoot, LPCTSTR lpszRegPath, LPCTSTR lpszValName, TCHAR * lpData, DWORD dwSize)
{
	DWORD dwType; HKEY hKey;
	if( RegOpenKeyEx(hRoot, lpszRegPath, 0, KEY_QUERY_VALUE, & hKey) != ERROR_SUCCESS ) return FALSE;
	if( RegQueryValueEx(hKey, lpszValName, 0, & dwType, (BYTE *)lpData, & dwSize) != ERROR_SUCCESS ) return FALSE;
	if( RegCloseKey(hKey) != ERROR_SUCCESS ) return FALSE;
	return TRUE;
}

BOOL GetRegKeyValue(HKEY hRoot, LPCTSTR lpszRegPath, LPCTSTR lpszValName, CString & szValue)
{
	DWORD dwType, dwSize = MAX_PATH; BYTE szBuf[MAX_PATH]; HKEY hKey;
	if( RegOpenKeyEx(hRoot, lpszRegPath, 0, KEY_QUERY_VALUE, & hKey) != ERROR_SUCCESS ) return FALSE;
	if( RegQueryValueEx(hKey, lpszValName, 0, & dwType, szBuf, & dwSize) != ERROR_SUCCESS ) return FALSE;
	if( RegCloseKey(hKey) != ERROR_SUCCESS ) return FALSE;
	szValue = szBuf;
	return TRUE;
}

BOOL SetRegKeyValue(HKEY hRoot, LPCTSTR lpszRegPath, LPCTSTR lpszValName, LPCTSTR lpszValue)
{
	DWORD dwType, dwDisposition; TCHAR szBuf[MAX_PATH]; HKEY hKey;
	dwType = REG_SZ; szBuf[0] = '\0';
	if( RegCreateKeyEx(hRoot, lpszRegPath, 0, szBuf, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, & hKey, & dwDisposition) != ERROR_SUCCESS ) return FALSE;
	if( RegSetValueEx(hKey, lpszValName, 0, dwType, (const BYTE *)lpszValue, strlen(lpszValue)+1) != ERROR_SUCCESS ) return FALSE;
	if( RegCloseKey(hKey) != ERROR_SUCCESS ) return FALSE;
	return TRUE;
}

BOOL DeleteRegKey(HKEY hRoot, LPCTSTR lpszRegPath)
{
	if( RegDeleteKey(hRoot, lpszRegPath) != ERROR_SUCCESS ) TRUE; // return FALSE;
	return TRUE;
}

BOOL DeleteRegValue(HKEY hRoot, LPCTSTR lpszRegPath, LPCTSTR lpszValName)
{
	HKEY hKey;
	if( RegOpenKeyEx(hRoot, lpszRegPath, 0, KEY_WRITE, & hKey) != ERROR_SUCCESS ) return FALSE;
	if( RegDeleteValue(hKey, lpszValName) != ERROR_SUCCESS ) TRUE; //return FALSE;
	if( RegCloseKey(hKey) != ERROR_SUCCESS ) return FALSE;
	return TRUE;
}

BOOL RegisterInProcServer(LPCTSTR lpszClsID, LPCTSTR lpszProgID, LPCTSTR lpszServerPath)
{
	CString szRegPath;
	szRegPath.Format("CLSID\\%s", lpszClsID);
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "", lpszProgID) ) return FALSE;
	szRegPath.Format("CLSID\\%s\\InProcServer32", lpszClsID);
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "", lpszServerPath) ) return FALSE;
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "ThreadingModel", "Apartment") ) return FALSE;
	szRegPath.Format("CLSID\\%s\\ProgID", lpszClsID);
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "", lpszProgID) ) return FALSE;
	szRegPath.Format("%s", lpszProgID);
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "", lpszProgID) ) return FALSE;
	szRegPath.Format("%s\\CLSID", lpszProgID);
	if( ! SetRegKeyValue(HKEY_CLASSES_ROOT, szRegPath, "", lpszClsID) ) return FALSE;
	return TRUE;
}

BOOL UnregisterInProcServer(LPCTSTR lpszClsID, LPCTSTR lpszProgID)
{
	CString szRegPath;
	szRegPath.Format("%s\\CLSID", lpszProgID);
	if( ! DeleteRegKey(HKEY_CLASSES_ROOT, szRegPath) ) return FALSE;
	szRegPath.Format("%s", lpszProgID);
	if( ! DeleteRegKey(HKEY_CLASSES_ROOT, szRegPath) ) return FALSE;
	szRegPath.Format("CLSID\\%s\\ProgID", lpszClsID);
	if( ! DeleteRegKey(HKEY_CLASSES_ROOT, szRegPath) ) return FALSE;
	szRegPath.Format("CLSID\\%s\\InProcServer32", lpszClsID);
	if( ! DeleteRegKey(HKEY_CLASSES_ROOT, szRegPath) ) return FALSE;
	szRegPath.Format("CLSID\\%s", lpszClsID);
	if( ! DeleteRegKey(HKEY_CLASSES_ROOT, szRegPath) ) return FALSE;
	return TRUE;
}

⌨️ 快捷键说明

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