www.pudn.com > vod2007.rar > Unit_DemoForm.cpp
//--------------------------------------------------------------------------- #include#pragma hdrstop //#define MAXI 50 #include "Unit_DemoForm.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TfrmDemo *frmDemo; //--------------------------------------------------------------------------- TDateTime dtInstallDate; const AnsiString strLicFileName = ".\\Liscens"; const AnsiString strRegKeyName = "\\Software\\MediaPlayer"; int iFileHandle; int iFileLength; BYTE FKey[FKEY_SIZE] = {0x01, 0x02, 0x03, 0x04}; //--------------------------------------------------------------------------- DWORD TfrmDemo::BTOD( const BYTE* pByte ) //BYTE转DWORD操作 { DWORD dDword; if( !pByte ) return 0; if( !(memcpy(&dDword, pByte, sizeof(DWORD))) ) return 0; return dDword; } //--------------------------------------------------------------------------- BYTE* TfrmDemo::DTOB( DWORD &dDWord ) //DWORD转BYTE操作 { BYTE* pByte = new BYTE[sizeof(DWORD)]; if( !(memcpy(pByte, &dDWord, sizeof(DWORD))) ) return 0; return &pByte[0]; } //--------------------------------------------------------------------------- __fastcall TfrmDemo::TfrmDemo(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TfrmDemo::FormCreate(TObject *Sender) { reg = new TRegistry; reg->RootKey = HKEY_CURRENT_USER; try { if(reg->OpenKey(strRegKeyName, false) == false) { //没有注册 frmInput = new TfrmInput(NULL); if(frmInput->ShowModal() == mrOk ) { if(!FileExists(strLicFileName)) { //是否存在LIC文件 if(dtInstallDate == Date()) { //判断当前日期是否等于输入的日期 BYTE *Input = DTOB((int)dtInstallDate); iFileHandle = FileCreate(strLicFileName); GetMac1(FKey, 1, Input, sizeof(DWORD), NULL, false, FMac); FileWrite(iFileHandle, (BYTE*)FMac, FMAC_SIZE); FileClose(iFileHandle); }else{ delete frmInput; frmInput = NULL; MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } //if(dtInstallDate == Date()) }else{ iFileHandle = FileOpen(strLicFileName, fmOpenRead); iFileLength = FileSeek(iFileHandle,0,2); FileSeek(iFileHandle,0,0); BYTE *pszBuffer = new BYTE[iFileLength]; FileRead(iFileHandle, pszBuffer, iFileLength); FileClose(iFileHandle); DWORD dwLicDate = BTOD(pszBuffer); DWORD dwInstallDate = (int)dtInstallDate; BYTE* Input = DTOB(dwInstallDate); GetMac1(FKey, 1, Input, sizeof(DWORD), NULL, false, FMac); if(dwLicDate != BTOD(FMac)) { delete frmInput; delete []pszBuffer; frmInput = NULL; pszBuffer = NULL; MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } } }else{ delete frmInput; frmInput = NULL; MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } reg->CreateKey(strRegKeyName); reg->OpenKey(strRegKeyName, true); reg->WriteInteger("Value", 0); //使用了的天数 reg->WriteInteger("Dates", (int)dtInstallDate); //安装软件的日期 reg->WriteInteger("Today", (int)Date()); reg->CloseKey(); }else{ reg->OpenKey(strRegKeyName, true); try { int value = reg->ReadInteger("Value"); int dates = reg->ReadInteger("Dates"); int today = reg->ReadInteger("Today"); if(value > USEDATES || !FileExists(strLicFileName)) { MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } iFileHandle = FileOpen(strLicFileName, fmOpenRead); //读入LicDates iFileLength = FileSeek(iFileHandle,0,2); FileSeek(iFileHandle,0,0); char *pszBuffer = new char[iFileLength]; FileRead(iFileHandle, pszBuffer, iFileLength); FileClose(iFileHandle); DWORD dwLicDate = BTOD(pszBuffer); BYTE* Input = DTOB(dates); GetMac1(FKey, 1, Input, sizeof(DWORD), NULL, false, FMac); DWORD dwRegDate = BTOD(FMac); if(dwLicDate != dwRegDate) //比较LicDates 与 RegDates { delete []pszBuffer; pszBuffer = NULL; MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); }else{ if(today < Date()) //判断是否是当天运行软件 { ++value; reg->WriteInteger("Value", value); reg->WriteInteger("Today", Date()); reg->CloseKey(); } if((int)Date() - value != dates) //比较当天日期减去使用天数是否等于安装日期 { delete []pszBuffer; pszBuffer = NULL; MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } } }catch(...){ MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } } }catch(...){ MessageBox(NULL, "正在使用非法软件,造成不良后果自负!","警告",MB_OK); //Application->Terminate(); abort(); } } //---------------------------------------------------------------------------