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

📄 about.cpp

📁 邮件管理系统... 方便的管理邮件数据库系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <registry.hpp>
#pragma hdrstop

#include "About.h"
#include "PostMain.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TAboutForm *AboutForm;
//---------------------------------------------------------------------------
__fastcall TAboutForm::TAboutForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TAboutForm::Button1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TAboutForm::Label4Click(TObject *Sender)
{
ShellExecute(NULL, "open", "mailto:wghsoftware@hotmail.com", NULL, "", SW_SHOW);
        
}

//---------------------------------------------------------------------------
void __fastcall TAboutForm::FormCreate(TObject *Sender)
{
AnsiString Sno, Year;
int ret;

    MainForm->RegistryStat=0;

    OldLabelWP = Label4->WindowProc;
    Label4->WindowProc = NewLabelWP;

    const String RegKey = "\\SoftWare\\WGHSoftware\\AuditQuery";
    TRegistry *MyRegistry = new TRegistry();
    MyRegistry->RootKey = HKEY_LOCAL_MACHINE;
    try {
        if(MyRegistry->OpenKey(RegKey, false)) {
            RegCode=MyRegistry->ReadString("SN");
            Unit=MyRegistry->ReadString("UnitName");
            SysName=MyRegistry->ReadString("SystemName");
            SysCaption=MyRegistry->ReadString("SystemCaption");
        MyRegistry->CloseKey();
        }
    }

    catch(ERegistryException &E) {
    	ShowMessage(E.Message);
        delete MyRegistry;
        return;
    }

    RegCodeEdit->Text=RegCode;
    UnitEdit->Text=Unit;
    SysNameEdit->Text=SysName;

    if(SysName.IsEmpty())SysNameEdit->ReadOnly=false;

    if(SysName.IsEmpty() || Unit.IsEmpty() || SysName.IsEmpty()) return;
    if(RegCode.Length()>=19){
        Year=RegCode.SubString(1,4);
        for(int i=1;i<5;i++) Year[i] -=('A' - '0');
        Sno=MakeSN(UnitEdit->Text, SysNameEdit->Text, Year);
        ret=Examine(Sno,RegCode);
        }
    else ret=0;

    if(ret==1){
    Label1->Caption="已注册";
    Label1->Font->Color=clBlue;
    BitBtn1->Enabled=false;
    }
    else if(ret==0)
    {
    Label1->Caption="未注册,请在这里注册";
    Label1->Color=TColor(0x00DCD76D);
    BitBtn1->Enabled=true;
    RegCodeEdit->Text="";
    }
    else
    {
    Label1->Caption="已过期注册码";
    Label1->Font->Color=clYellow;
    BitBtn1->Enabled=true;
    }

    delete MyRegistry;
    MainForm->RegistryStat=ret;
}
//---------------------------------------------------------------------------
/*
其实就是把她的windowproc变成自己的proc
就可以普做消息了
原理还是比较简单的
*/

//---------------------------------------------------------------------------

void __fastcall TAboutForm::NewLabelWP(TMessage &Msg)
 {
     switch (Msg.Msg)
     {
         case CM_MOUSEENTER:
         {
                Label4->Font->Color=clFuchsia;
                Label4->Font->Size=10;
                Label4->Font->Style=Label4->Font->Style << fsBold << fsItalic;

            // mouse cursor has entered control
            break; 
         }
         case CM_MOUSELEAVE:
         {
                Label4->Font->Color=clBlue;
                Label4->Font->Size=10;
                Label4->Font->Style=Label4->Font->Style >> fsBold >> fsItalic;

            // mouse cursor has left control 
            break; 
         }
         case WM_DESTROY: 
         {
            Label4->WindowProc = OldLabelWP;
            break; 
         } 
     }
     OldLabelWP(Msg); 
} 

//---------------------------------------------------------------------------

void __fastcall TAboutForm::Label1Click(TObject *Sender)
{
 Notebook1->PageIndex=1;
 AboutForm->Caption="注册";
}
//---------------------------------------------------------------------------

void __fastcall TAboutForm::BitBtn1Click(TObject *Sender)
{
AnsiString Year, Sno, ORARoot;
int ret=0;
//ShowMessage( RegCodeEdit->Text);

if(RegCodeEdit->Text.Length()<18) return;


    Year=RegCodeEdit->Text.SubString(1,4);
    for(int i=1;i<5;i++) Year[i] -=('A' - '0');

    Sno=MakeSN(UnitEdit->Text, SysNameEdit->Text, Year);

    ret=Examine(Sno,RegCodeEdit->Text);

    if(ret==0){
    Label1->Caption="请在这里注册";
    Label1->Color=TColor(0x00DCD76D);
    BitBtn1->Enabled=true;
    ShowMessage("注册码错!");
    return;
    }
    else if(ret==-1)
    {
    Label1->Caption=" 注册码已过期";
  //Label1->Color=clYellow;
    BitBtn1->Enabled=true;
    ShowMessage("注册码已过期!");
    return;
    }

    const String RegKey = "\\SoftWare\\WGHSoftware\\AuditQuery";
    TRegistry *MyRegistry = new TRegistry();
    MyRegistry->RootKey = HKEY_LOCAL_MACHINE;
    try {
        if(MyRegistry->OpenKey(RegKey, true)) {
            MyRegistry->WriteString("UnitName",UnitEdit->Text);
            MyRegistry->WriteString("SN",RegCodeEdit->Text);
            MyRegistry->WriteString("SystemName",SysNameEdit->Text);
            MyRegistry->CloseKey();
        }
    }
    catch(ERegistryException &E) {  
    	ShowMessage(E.Message);
        delete MyRegistry;
        return;
    }
    delete MyRegistry;
    ShowMessage("注册成功!");
    Label1->Caption="已注册";
    BitBtn1->Enabled=false;
}
//---------------------------------------------------------------------------


AnsiString __fastcall TAboutForm ::MakeSN(String sUnit, String sSysName, String sYear)
{
AnsiString sStr, SN=" ", Code="============", Unit, SysName, Year;
int tlen, slen, syslen, i,j,s,t;
char ch;
 
    Year=sYear;

    sStr="wsj-cwj-wgh-";
    slen=sStr.Length();

    Unit=sUnit.Trim();
    tlen=Unit.Length();

    for(;tlen<=slen;tlen++) Unit=Unit + " ";

    for(i=1,s=0;i<=tlen;i++){
     s +=Unit[i]*3;
    }

    SysName=sSysName.Trim();
    syslen=SysName.Length();
    for(i=1,t=0;i<=syslen;i++){
     t +=SysNameEdit->Text[i];
    }

    
    if(atoi(Year.c_str())<1000){
    ShowMessage("注册码非法!");
    return SN;
    }

    try{
    Year.ToInt();
    }
    catch(...){
    ShowMessage("注册码非法!");
    return SN;
    }

    for(;tlen>0;tlen--){
    j=tlen % slen + 1;
    ch=(sStr[j]*107 - Unit[tlen]*13 + tlen - slen) + Year.ToInt() - t;
    Code[j]=abs( (Code[j] + ch - s )%26  ) + 'A';

    if( Code[j]>'Z' || Code[j]<'A')
     ShowMessage(j);
    }

    for(i=1;i<5;i++) Year[i]=Year[i] + 'A' - '0';
    SN=Year + "-" + Code.SubString(1,4)+"-"+Code.SubString(5,4)+"-"+Code.SubString(9,4);

    return SN;
}


int __fastcall TAboutForm::Examine(AnsiString Sno, AnsiString RCode)
{

int slen=Sno.Length();
int rlen=RCode.Length();
AnsiString Year, Today, s1, s2;
TDateTime *DateTime = new TDateTime();

        Today = DateTime->CurrentDate().FormatString( "yyyy");
        Year=RCode.SubString(1,4);
        s1=Sno.SubString(6, slen);
        s2=RCode.SubString(6, rlen);
       
        for(int i=1;i<5;i++) Year[i] -=('A' - '0');

        if(Today>Year) return -1;
        if(s1!=s2) return 0;
        delete DateTime;
        return 1;
}

//---------------------------------------------------------------------------

void __fastcall TAboutForm::BitBtn2Click(TObject *Sender)
{
 Notebook1->PageIndex=0;
 AboutForm->Caption="关于本系统";
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

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