📄 addshellformfile.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MyClassFile.h"
#include "EncryptFormFile.h"
#include "DecryptFormFile.h"
#include "AboutFormFile.h"
#include "AddShellFormFile.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma link "DiskInfo"
#pragma link "Explform"
#pragma link "XPMenu"
#pragma resource "*.dfm"
TAddShellForm *AddShellForm;
TPascalFun *PascalFun; //引用Delphi函数的类
TMyClass *MyClass; //作者自定义的类
//---------------------------------------------------------------------------
__fastcall TAddShellForm::TAddShellForm(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::EncryptFileClick(TObject *Sender)
{
EncryptForm->Show();
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::OpenClick(TObject *Sender)
{
if(OpenDialog->Execute())
FileName->Text=OpenDialog->FileName;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::OpenAboutClick(TObject *Sender)
{
AboutForm->Show();
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::UseNormalEncryptClick(TObject *Sender)
{
InputPassword->Enabled=UseNormalEncrypt->Checked;
if(!InputPassword->Enabled)
{
Password->Text=""; Repeat->Text="";
}
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::UseLimitTimeClick(TObject *Sender)
{
InputTime->Enabled=UseLimitTime->Checked;
if(InputTime->Enabled)
{
ST->Value=0;
ET->Value=23;
}
if(!InputTime->Enabled)//24表示不使用“限时加密”
{
ST->Value=24;
ET->Value=24;
}
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::UseCDVOLClick(TObject *Sender)
{
if(UseCDVOL->Checked)
{
DiskInfo->Disk=MyClass->FindCD(AddShellForm->DiskInfo);
if(DiskInfo->DiskSize>1) //尝试检测光盘
ShowMessage("在解密文件前,请妥善保管这张光盘");
else{
ShowMessage("请把光盘插进光驱里!");
UseCDVOL->Checked=false;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::StartAddClick(TObject *Sender)
{
unsigned long BanMove,CDVOL;
FILETIME *creation=new FILETIME;
FILETIME *lastwrite=new FILETIME;
HFILE hfile;
hfile=_lopen(PascalFun->MypChar(OpenDialog->FileName),OF_READ);
GetFileTime((HANDLE *)hfile,creation,NULL,lastwrite);
_lclose(hfile);
if(OpenDialog->FileName.Length()<1)
{
ShowMessage("请先查找欲加密的文件!");
return;
}
if(Password->Text!=Repeat->Text)
{
ShowMessage("输入的密码与重复的密码不符!");
return;
}
if(ST->Value>ET->Value)
{
ShowMessage("限制解密的时间不能从大到小!");
return;
}
if(UseBanMove->Checked)
{
BanMove=MyClass->GetBanMove(AddShellForm->DiskInfo,OpenDialog->FileName);
}
if(!UseBanMove->Checked)
BanMove=19851120;
if(UseCDVOL->Checked)
{
DiskInfo->Disk=MyClass->FindCD(AddShellForm->DiskInfo);
CDVOL=abs(DiskInfo->SerialNumber+DiskInfo->DiskSize/1024);
}
if(!UseCDVOL->Checked)
CDVOL=19860308;
MyClass->ShowMyMessage("EXE文件加口令","正在为 "+ExtractFileName(OpenDialog->FileName)+" 加口令......");
try{ //先压缩文件,再加密
MyClass->Compress(OpenDialog->FileName);
AnsiString CryptFile; //文件名为XXXXXXXXXXXXXXX.exe.gv.exe
CryptFile=MyClass->EncryptFile(OpenDialog->FileName,".gv",Password->Text,ST->Value,ET->Value,BanMove,CDVOL);
//将目标与源文件合并
PascalFun->CombineFile("DialogEXE","ExeFile",OpenDialog->FileName+".gv.exe",CryptFile);
Sleep(4000);//等待系统修改时间
//更改文件的时间属性
hfile=_lopen(PascalFun->MypChar(OpenDialog->FileName+".gv.exe"),OF_WRITE);
SetFileTime((HANDLE *)hfile,creation,NULL,lastwrite);
_lclose(hfile);
}
catch ( ... )
{
MyClass->CloseMyMessage();
ShowMessage("EXE文件加口令失败!");
return;
}
MyClass->CloseMyMessage();
ShowMessage("EXE文件加口令成功!\n请记住您使用的加密方式!");
TCloseAction *Action;
AddShellForm->FormClose(Sender,*Action);
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::DecryptFileClick(TObject *Sender)
{
DecryptForm->Show();
this->Close();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::ShowHint(TObject * Sender)
{
StatusBar->SimpleText=Application->Hint;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::FormActivate(TObject *Sender)
{
Application->OnHint=ShowHint;
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::ViewHelpClick(TObject *Sender)
{
AnsiString Helpfile=ExtractFilePath(Application->ExeName)+"Help.CHM";//帮助文档的路径
ShellExecute(Handle,NULL,Helpfile.c_str(),NULL,NULL,SW_SHOWNORMAL); //打开帮助文档
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::FormClose(TObject *Sender,
TCloseAction &Action)
{
//----------------清除上一次的操作
FileName->Text="";
if(UseNormalEncrypt->Checked)//被选中时
{ UseNormalEncrypt->Checked=false;
UseNormalEncrypt->OnClick(Sender);
}
if(UseLimitTime->Checked)//被选中时
{ UseLimitTime->Checked=false;
UseLimitTime->OnClick(Sender);
}
if(UseBanMove->Checked)//被选中时
UseBanMove->Checked=false;
if(UseCDVOL->Checked)//被选中时
{ UseCDVOL->Checked=false;
UseCDVOL->OnClick(Sender);}
AboutForm->Show();
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::SetupAllDeleteClick(TObject *Sender)
{
if(Application->MessageBoxA("<<灭文器 v1.00>>可以彻底地删除文件(即文件删除被恢复后也只是一堆乱码),更好地保证您文件的安全。\n是否想安装<<灭文器 v1.00>>到系统文件夹“发送到”?",Application->Title.c_str(),MB_YESNO)==IDYES)
{
PascalFun->LoadFromRes("AllDeleteEXE","ExeFile",PascalFun->GetSystemPath()+"\\灭文器 v1.00.exe");
ShowMessage("安装成功!您若想用<<灭文器 v1.00>>删除文件,就把选定的文件或文件夹发送到<<灭文器 v1.00>>。");
}
}
//---------------------------------------------------------------------------
void __fastcall TAddShellForm::ExitClick(TObject *Sender)
{
Application->Terminate();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -