?? 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 + -