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

📄 xoslpass.cpp

📁 XOSL 多操作系统管理工具 源代码 多系统引导工具
💻 CPP
字号:

#include <XoslPass.h>
#include <encpwd.h>
#include <disk.h>
#include <mbrpass.h>


static const char *StrPwLabel = "XOSL Main password";


CXoslPassword::CXoslPassword(CXOSLData &XoslDataToUse, CDialogs &DialogsToUse):
	XoslData(XoslDataToUse), Dialogs(DialogsToUse)
{

}

CXoslPassword::~CXoslPassword()
{

}

void CXoslPassword::CreateControls()
{
	Group = new CBevel(BEVEL_FRAME,true,132,32,201,217,false);
	Label = new CLabel(StrPwLabel,STYLE_REGULAR,false,17,140,25,false);
	OldLabel = new CLabel("Old password:",STYLE_REGULAR,true,17,172,56,false);
	NewLabel = new CLabel("New password:",STYLE_REGULAR,true,17,172,104,false);
	ReLabel = new CLabel("Re-enter password:",STYLE_REGULAR,true,17,172,152,false);
	OldEdit = new CEdit("",32,true,false,172,72,121,false,this);
	NewEdit = new CEdit("",32,true,false,172,120,121,false,this);
	ReEdit = new CEdit("",32,true,false,172,168,121,false,this);
	ApplyBtn = new CButton("Apply",195,208,75,25,false,this);
}

void CXoslPassword::InitializeControls(CTabControl *TabControl)
{
	TabControl->AddControl(3,Group);
	TabControl->AddControl(3,Label);
	TabControl->AddControl(3,OldLabel);
	TabControl->AddControl(3,NewLabel);
	TabControl->AddControl(3,ReLabel);
	TabControl->AddControl(3,OldEdit);
	TabControl->AddControl(3,NewEdit);
	TabControl->AddControl(3,ReEdit);
	TabControl->AddControl(3,ApplyBtn);
}

void CXoslPassword::ConnectEventHandlers()
{
	ApplyBtn->OnClick((TWndOnClick)ApplyBtnClick);
}

void CXoslPassword::InstallControls(CForm *Form)
{
	PrefForm = Form;
	Form->AddControl(Group);
	Form->AddControl(Label);
	Form->AddControl(OldLabel);
	Form->AddControl(NewLabel);
	Form->AddControl(ReLabel);
	Form->AddControl(OldEdit);
	Form->AddControl(NewEdit);
	Form->AddControl(ReEdit);
	Form->AddControl(ApplyBtn);
}

void CXoslPassword::RealignText()
{
	bool Visible;

	Visible = Label->IsVisible();
	Label->SetVisible(false);
	Label->SetCaption(StrPwLabel);
	Label->SetVisible(Visible);
}




void CXoslPassword::ApplyBtnClick(CXoslPassword &XoslPassword)
{
	unsigned long Code;
	unsigned long OldCode;
	char Password[48];

	OldCode = XoslPassword.XoslData.GetPassword();
	XoslPassword.OldEdit->GetText(Password);
	Code = EncodePassword(Password);
	if (Code != OldCode) {
		XoslPassword.Dialogs.ShowMessageDialog(XoslPassword.PrefForm,"Old password","Invalid password.");
		return;
	}
	XoslPassword.NewEdit->GetText(Password);
	Code = EncodePassword(Password);
	XoslPassword.ReEdit->GetText(Password);
	if (Code != EncodePassword(Password)) {
		XoslPassword.Dialogs.ShowMessageDialog(XoslPassword.PrefForm,"New password","Passwords do not match.");
		return;
	}

	XoslPassword.SetMBRPassword(Code);

	XoslPassword.XoslData.SetPassword(Code);
	XoslPassword.XoslData.SaveData();
	XoslPassword.Dialogs.ShowMessageDialog(XoslPassword.PrefForm,"Password","New password saved.");
}


void CXoslPassword::SetMBRPassword(unsigned long Code)
{
	CDisk Disk;
	CMBRPassword MBR;

	Disk.Map(0x80,0);
	Disk.Read(0,&MBR,1);

	MBR.Password = Code;

	Disk.Write(0,&MBR,1);
}

⌨️ 快捷键说明

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