亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? register.cpp

?? 骨骼動(dòng)畫(huà)....把魔獸模型解出的代碼..
?? CPP
字號(hào):
//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "Register.h"


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
REGISTER Register;


//+-----------------------------------------------------------------------------
//| Constructor
//+-----------------------------------------------------------------------------
REGISTER::REGISTER()
{
	//Empty
}


//+-----------------------------------------------------------------------------
//| Destructor
//+-----------------------------------------------------------------------------
REGISTER::~REGISTER()
{
	//Empty
}


//+-----------------------------------------------------------------------------
//| Flushes a key
//+-----------------------------------------------------------------------------
VOID REGISTER::FlushKey(HKEY Key)
{
	if(Key != NULL) RegFlushKey(Key);
}


//+-----------------------------------------------------------------------------
//| Closes a key
//+-----------------------------------------------------------------------------
VOID REGISTER::CloseKey(HKEY Key)
{
	if(Key != NULL) RegCloseKey(Key);
}


//+-----------------------------------------------------------------------------
//| Creates a new key
//+-----------------------------------------------------------------------------
BOOL REGISTER::CreateKey(HKEY& Key, HKEY Parent, CONST std::string& Name)
{
	DWORD Mode;

	if(RegCreateKeyEx(Parent, Name.c_str(), 0, "", 0, KEY_ALL_ACCESS, NULL, &Key, &Mode) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to create the registry key \"" + Name + "\"!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Opens an existing key
//+-----------------------------------------------------------------------------
BOOL REGISTER::OpenKey(HKEY& Key, HKEY Parent, CONST std::string& Name)
{
	if(RegOpenKeyEx(Parent, Name.c_str(), 0, KEY_READ, &Key) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to open the registry key \"" + Name + "\"!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Sets a dword value
//+-----------------------------------------------------------------------------
BOOL REGISTER::SetDwordValue(HKEY Key, CONST std::string& Name, DWORD Dword)
{
	if(RegSetValueEx(Key, NULL, 0, REG_DWORD, reinterpret_cast<CONST BYTE*>(&Dword), sizeof(DWORD)) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to set a registry key string value!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Sets a binary value
//+-----------------------------------------------------------------------------
BOOL REGISTER::SetBinaryValue(HKEY Key, CONST std::string& Name, BUFFER& Buffer)
{
	if(RegSetValueEx(Key, NULL, 0, REG_BINARY, reinterpret_cast<CONST BYTE*>(Buffer.GetData()), static_cast<INT>(Buffer.GetSize()) + 1) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to set a registry key string value!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Sets a string value
//+-----------------------------------------------------------------------------
BOOL REGISTER::SetStringValue(HKEY Key, CONST std::string& Name, CONST std::string& String)
{
	if(RegSetValueEx(Key, (Name == "" ? NULL : Name.c_str()), 0, REG_SZ, reinterpret_cast<CONST BYTE*>(String.c_str()), static_cast<INT>(String.size()) + 1) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to set a registry key string value!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Returns a dword value
//+-----------------------------------------------------------------------------
BOOL REGISTER::GetDwordValue(HKEY Key, CONST std::string& Name, DWORD& Dword)
{
	DWORD Type;
	DWORD Size;

	if(RegQueryValueEx(Key, Name.c_str(), 0, &Type, NULL, &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key dword value information!");
		return FALSE;
	}

	if(Type != REG_DWORD)
	{
		Error.SetMessage("The registry key is not a dword!");
		return FALSE;
	}

	if(RegQueryValueEx(Key, Name.c_str(), 0, NULL, reinterpret_cast<BYTE*>(&Dword), &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key dword value!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Returns a binary value
//+-----------------------------------------------------------------------------
BOOL REGISTER::GetBinaryValue(HKEY Key, CONST std::string& Name, BUFFER& Buffer)
{
	DWORD Type;
	DWORD Size;

	if(RegQueryValueEx(Key, Name.c_str(), 0, &Type, NULL, &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key binary value information!");
		return FALSE;
	}

	if(Type != REG_BINARY)
	{
		Error.SetMessage("The registry key is not binary!");
		return FALSE;
	}

	if(!Buffer.Resize(Size)) return FALSE;

	if(RegQueryValueEx(Key, Name.c_str(), 0, NULL, reinterpret_cast<BYTE*>(Buffer.GetData()), &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key binary value!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Returns a string value
//+-----------------------------------------------------------------------------
BOOL REGISTER::GetStringValue(HKEY Key, CONST std::string& Name, std::string& String)
{
	DWORD Type;
	DWORD Size;
	std::vector<CHAR> Buffer;

	if(RegQueryValueEx(Key, Name.c_str(), 0, &Type, NULL, &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key string value information!");
		return FALSE;
	}

	if(Type != REG_SZ)
	{
		Error.SetMessage("The registry key is not a string!");
		return FALSE;
	}

	Buffer.resize(Size + 1);

	if(RegQueryValueEx(Key, Name.c_str(), 0, NULL, reinterpret_cast<BYTE*>(&Buffer[0]), &Size) != ERROR_SUCCESS)
	{
		Error.SetMessage("Unable to get a registry key string value!");
		return FALSE;
	}

	Buffer[Size] = '\0';
	String = &Buffer[0];

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Registers an extention
//+-----------------------------------------------------------------------------
BOOL REGISTER::RegisterExtention(CONST std::string& Extention, CONST std::string& Description, CONST std::string& Icon)
{
	BOOL Result = FALSE;
	HKEY Key = NULL;
	HKEY MpqKey = NULL;
	HKEY MpqIconKey = NULL;
	HKEY MpqShellKey = NULL;
	HKEY MpqShellOpenKey = NULL;
	HKEY MpqShellOpenCommandKey = NULL;
	std::string StringName;
	std::string StringExtention;
	std::string StringIconPath;
	std::string StringProgramPath;

	while(TRUE)
	{
		StringName = "Magos.War3ModelEditor." + Common.LowerCase(Extention);
		StringExtention = "." + Common.LowerCase(Extention);
		StringIconPath = Common.GetProgramDirectory() + "\\" + Icon;
		StringProgramPath = Common.GetProgramDirectory() + "\\" + Common.GetProgramFileName() + " %1";

		if(!CreateKey(Key, HKEY_CLASSES_ROOT, StringExtention)) break;
		if(!CreateKey(MpqKey, HKEY_CLASSES_ROOT, StringName)) break;
		if(!CreateKey(MpqIconKey, MpqKey, "DefaultIcon")) break;
		if(!CreateKey(MpqShellKey, MpqKey, "Shell")) break;
		if(!CreateKey(MpqShellOpenKey, MpqShellKey, "Open")) break;
		if(!CreateKey(MpqShellOpenCommandKey, MpqShellOpenKey, "Command")) break;

		if(!SetStringValue(Key, "", StringName)) break;
		if(!SetStringValue(MpqKey, "", Description)) break;
		if(!SetStringValue(MpqIconKey, "", StringIconPath)) break;
		if(!SetStringValue(MpqShellOpenCommandKey, "", StringProgramPath)) break;

		FlushKey(Key);
		FlushKey(MpqKey);
		FlushKey(MpqIconKey);
		FlushKey(MpqShellKey);
		FlushKey(MpqShellOpenKey);
		FlushKey(MpqShellOpenCommandKey);

		Result = TRUE;
		break;
	}

	CloseKey(MpqShellOpenCommandKey);
	CloseKey(MpqShellOpenKey);
	CloseKey(MpqShellKey);
	CloseKey(MpqIconKey);
	CloseKey(MpqKey);
	CloseKey(Key);

	return Result;
}


//+-----------------------------------------------------------------------------
//| Registers an open-with command
//+-----------------------------------------------------------------------------
BOOL REGISTER::RegisterOpenWith(CONST std::string& Description)
{
	BOOL Result = FALSE;
	HKEY AllKey = NULL;
	HKEY AllShellKey = NULL;
	HKEY AllShellOpenKey = NULL;
	HKEY AllShellOpenCommandKey = NULL;
	std::string StringProgramPath;

	while(TRUE)
	{
		StringProgramPath = Common.GetProgramDirectory() + "\\" + Common.GetProgramFileName() + " %1";

		if(!CreateKey(AllKey, HKEY_CLASSES_ROOT, "AllFilesystemObjects")) break;
		if(!CreateKey(AllShellKey, AllKey, "Shell")) break;
		if(!CreateKey(AllShellOpenKey, AllShellKey, Description)) break;
		if(!CreateKey(AllShellOpenCommandKey, AllShellOpenKey, "Command")) break;

		if(!SetStringValue(AllShellOpenCommandKey, "", StringProgramPath)) break;

		FlushKey(AllKey);
		FlushKey(AllShellKey);
		FlushKey(AllShellOpenKey);
		FlushKey(AllShellOpenCommandKey);

		Result = TRUE;
		break;
	}

	CloseKey(AllShellOpenCommandKey);
	CloseKey(AllShellOpenKey);
	CloseKey(AllShellKey);
	CloseKey(AllKey);

	return Result;
}


//+-----------------------------------------------------------------------------
//| Retyrieves the warcraft directory from the registry
//+-----------------------------------------------------------------------------
BOOL REGISTER::FindWarcraftDirectory()
{
	BOOL Result = FALSE;
	HKEY SoftwareKey = NULL;
	HKEY SoftwareBlizzardKey = NULL;
	HKEY SoftwareBlizzardWarcraftKey = NULL;

	while(TRUE)
	{
		if(!OpenKey(SoftwareKey, HKEY_CURRENT_USER, "Software")) break;
		if(!OpenKey(SoftwareBlizzardKey, SoftwareKey, "Blizzard Entertainment")) break;
		if(!OpenKey(SoftwareBlizzardWarcraftKey, SoftwareBlizzardKey, "Warcraft III")) break;

		if(!GetStringValue(SoftwareBlizzardWarcraftKey, "InstallPath", WarcraftDirectory)) break;

		Result = TRUE;
		break;
	}

	CloseKey(SoftwareBlizzardWarcraftKey);
	CloseKey(SoftwareBlizzardKey);
	CloseKey(SoftwareKey);

	if(!Result) WarcraftDirectory = Common.GetProgramDirectory();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Returns the warcraft directory
//+-----------------------------------------------------------------------------
std::string REGISTER::GetWarcraftDirectory() CONST
{
	return WarcraftDirectory;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av一区二区| 欧美日韩www| 亚洲午夜久久久| 欧美性猛交xxxx黑人交| 亚洲综合激情网| 亚洲精品一区二区三区四区高清| 经典三级在线一区| 国产精品久久久久7777按摩| 91色视频在线| 蜜臀av性久久久久蜜臀aⅴ| 久久久亚洲精品一区二区三区| 成人一级片网址| 一区二区三区免费| 久久综合国产精品| 在线观看日产精品| 国产精品一二三四区| 亚洲综合免费观看高清完整版 | 欧美日韩dvd在线观看| 老司机午夜精品99久久| 国产欧美一区二区三区沐欲| 欧美精品一二三| 成人综合在线观看| 午夜视频一区在线观看| 国产欧美日韩三级| 884aa四虎影成人精品一区| 成人91在线观看| 日韩高清中文字幕一区| 91性感美女视频| 成人免费毛片嘿嘿连载视频| 欧美专区日韩专区| 国产精品主播直播| 日韩在线卡一卡二| 亚洲欧美福利一区二区| 国产亚洲精品中文字幕| 日韩欧美亚洲国产精品字幕久久久| 91香蕉视频污在线| 国产成人免费xxxxxxxx| 久久国产视频网| 日韩电影在线一区| 丝袜脚交一区二区| 夜夜揉揉日日人人青青一国产精品| 中文久久乱码一区二区| 久久精品一区二区| 欧美v国产在线一区二区三区| 91超碰这里只有精品国产| 欧美性一区二区| 色狠狠av一区二区三区| eeuss鲁片一区二区三区在线观看| 国产综合一区二区| 国内精品第一页| 国产一区视频网站| 国产精品18久久久久久久网站| 极品少妇xxxx精品少妇| 蜜桃av一区二区在线观看| 日本亚洲天堂网| 激情亚洲综合在线| 国产在线播精品第三| 国产精品一卡二卡| 99精品视频在线播放观看| 91浏览器在线视频| 欧美日本在线观看| 精品少妇一区二区| 日本一区二区三区视频视频| 亚洲欧美在线视频| 一区二区三区蜜桃| 日韩激情av在线| 懂色av一区二区三区免费观看 | 成人午夜激情在线| 色婷婷久久久亚洲一区二区三区 | 国产乱子伦一区二区三区国色天香| 国产真实乱对白精彩久久| eeuss影院一区二区三区 | 国产成人夜色高潮福利影视| 成人午夜激情视频| 日韩亚洲欧美一区| 亚洲欧美一区二区在线观看| 视频一区欧美日韩| 成人一区二区三区| 欧美一级理论片| 日韩av在线播放中文字幕| 久久爱www久久做| 日本高清不卡aⅴ免费网站| 日韩视频一区二区| 亚洲一区二区三区四区在线观看| 久久精品久久精品| 国产精品美女久久久久aⅴ国产馆| 亚洲人成人一区二区在线观看| 国产黄色精品网站| 91搞黄在线观看| 精品日产卡一卡二卡麻豆| 678五月天丁香亚洲综合网| 久久久亚洲精品一区二区三区| 夜夜夜精品看看| 91免费国产视频网站| 久久美女艺术照精彩视频福利播放| 一区二区视频在线| 国产一区二区三区不卡在线观看| 欧美日韩国产综合一区二区| 国产精品热久久久久夜色精品三区 | 夜夜操天天操亚洲| av亚洲精华国产精华精| 日本一区二区三区高清不卡| 久久99这里只有精品| 91精品国产91久久久久久最新毛片| 最近中文字幕一区二区三区| 成人久久视频在线观看| 国产欧美日韩视频在线观看| 精品一区精品二区高清| 欧美成人欧美edvon| 久久精品国产精品青草| 日韩一区二区免费在线电影| 午夜私人影院久久久久| 欧美三级视频在线观看| 亚洲国产精品久久艾草纯爱| 色婷婷av一区二区三区软件| 亚洲一区二区视频在线| 欧美美女一区二区在线观看| 日韩成人一级大片| 精品奇米国产一区二区三区| 国产又粗又猛又爽又黄91精品| 亚洲精品一区二区三区福利| 精品亚洲成a人在线观看| 久久久久99精品一区| 99麻豆久久久国产精品免费优播| 中文字幕一区二区三区四区不卡 | 一区二区三区四区亚洲| 欧美在线观看18| 免费成人av在线| 国产三级欧美三级日产三级99| 成人美女视频在线观看18| 亚洲乱码中文字幕| 日韩午夜激情视频| 成人性色生活片免费看爆迷你毛片| 亚洲免费在线视频一区 二区| 欧美久久免费观看| 粉嫩13p一区二区三区| 亚洲妇女屁股眼交7| 久久午夜羞羞影院免费观看| 99riav久久精品riav| 免费观看久久久4p| 亚洲日本欧美天堂| 2023国产精华国产精品| 欧美亚洲丝袜传媒另类| 国产美女av一区二区三区| 亚洲一区二区三区四区的| 日本一区二区三区电影| 91麻豆精品国产91久久久久久久久 | 国产亚洲精品aa| 91.com在线观看| 91成人免费在线视频| 国产一二精品视频| 日本成人在线看| 亚洲精品高清视频在线观看| 久久久久久久久久美女| 51精品国自产在线| 色婷婷av一区二区三区大白胸| 国产精品一区二区在线观看不卡 | 欧美日韩一级视频| 99久久综合国产精品| 国产精品综合网| 麻豆精品国产传媒mv男同| 亚洲a一区二区| 夜夜精品视频一区二区| 亚洲视频免费观看| 一区二区三区中文在线| 久久99最新地址| 国产日本一区二区| 色婷婷综合久色| 国产真实精品久久二三区| 日本美女一区二区| 日产精品久久久久久久性色| 午夜一区二区三区视频| 亚洲在线免费播放| 亚洲一区二区三区视频在线| 亚洲免费伊人电影| 一区二区三区四区高清精品免费观看 | 免费的成人av| 毛片av一区二区| 国内精品久久久久影院薰衣草 | 亚洲成人午夜电影| 午夜国产精品影院在线观看| 丝袜美腿亚洲一区二区图片| 免费成人深夜小野草| 精品一区二区三区影院在线午夜 | 亚洲一区二区视频在线| 香蕉影视欧美成人| 另类成人小视频在线| 国产激情偷乱视频一区二区三区| 国产aⅴ综合色| 色八戒一区二区三区| 日韩一区二区影院| 久久综合一区二区| 日韩伦理电影网| 日本va欧美va瓶| 韩国精品主播一区二区在线观看 | 欧美人牲a欧美精品| 久久久欧美精品sm网站| 亚洲欧美日韩电影| 午夜精品久久久久久久99水蜜桃| 国产一二精品视频|