📄 frmtools.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <Registry.hpp>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <strstream>
#include <string>
#include <nb30.h>
#pragma hdrstop
#include "Frmtools.h"
#include "Frmlogin.h"
#include "SJKLL.h"
#include "Tzc.h"
#include "YDver.h"
#include "CZKL.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFrmtool *Frmtool;
using namespace std;
//---------------------------------------------------------------------------
__fastcall TFrmtool::TFrmtool(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::FormShow(TObject *Sender)
{
Database1->Open();
Table2->Open();
Login->Hide();
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::FormClose(TObject *Sender, TCloseAction &Action)
{
Table2->Active=false;
Table2->Exclusive=true;
Table2->EmptyTable();
Table2->Exclusive=false;
Table2->Active=true;
Session->DeleteAlias("ydgl");
Session->SaveConfigFile();
Login->Close();
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton3Click(TObject *Sender)
{
KL=new TKL(this);
KL->ShowModal();
if (!KL->klok)
{
delete KL;
return;
}
else
{
delete KL;
}
Timer1->Enabled=false;
AnsiString SQLstmt;
AnsiString strpath;
if(RadioButton1->Checked)
{
AnsiString AppPath = ExtractFilePath(Application->ExeName);
strpath= AppPath +"backup\\Yddb.bak";
}
else strpath=ExtractFilePath(Edit2->Text)+"Yddb.bak";
//DirectoryExists()//检查制定目录是否存在
if (ExtractFileDrive(strpath)!="A:")
{
Database1->Open();
SQLstmt="USE master";
SQLstmt=SQLstmt+" EXEC sp_addumpdevice 'disk','ydbak','";
SQLstmt=SQLstmt+strpath+"'";
SQLstmt=SQLstmt+" BACKUP DATABASE Yddb TO ydbak WITH INIT";
Database1->Execute(SQLstmt, NULL, false, NULL);
Database1->Execute("USE master EXEC sp_dropdevice 'ydbak'", NULL, false, NULL);
Database1->Execute("USE yddb", NULL, false, NULL);
}
else
{
MessageBox(NULL,"软盘容量不足,请备份到硬盘!","提示",MB_OK|MB_ICONWARNING);
}
//
// StatusBar1->Panels->Items[1]->Text=SpeedButton3->Caption;
StatusBar1->Update();
for (int i=1;i<=100;i++)
{
for (int j=1;j<1000000;j++);
ProgressBar1->Position+=1;
}
ProgressBar1->Position=0;
// StatusBar1->Panels->Items[1]->Text="";
//
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton4Click(TObject *Sender)
{
KL=new TKL(this);
KL->ShowModal();
if (!KL->klok)
{
delete KL;
return;
}
else
{
delete KL;
}
Timer1->Enabled=false;
AnsiString SQLstmt;
AnsiString strpath;
if(RadioButton1->Checked)
{
AnsiString AppPath = ExtractFilePath(Application->ExeName);
strpath= AppPath +"backup\\Yddb.bak";
}
else strpath=Edit2->Text;
if (FileExists(strpath))
{
Database1->Close();
SQLstmt="USE master";
SQLstmt=SQLstmt+" EXEC sp_addumpdevice 'disk','ydbak','";
SQLstmt=SQLstmt+strpath+"'";
SQLstmt=SQLstmt+" RESTORE DATABASE Yddb FROM ydbak ";
Database1->Execute(SQLstmt, NULL, false, NULL);
Database1->Close();
Database1->Execute("USE master EXEC sp_dropdevice 'ydbak'", NULL, false, NULL);
Database1->Execute("USE yddb", NULL, false, NULL);
Timer1->Enabled=true;
Database1->Open();
Table2->Open();
}
else MessageBox(NULL,"指定的文件不存在!","提示",MB_OK|MB_ICONWARNING);
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::Timer1Timer(TObject *Sender)
{
Table2->Refresh();
Table2->Last();
int zxhs=0;
int tchs=0;
int dlhs=0;
Table2->First();
while (!Table2->Eof)
{
if (Table2->FieldByName("bz")->AsString=="登录")
dlhs++;
else
tchs++;
Table2->Next();
}
zxhs=dlhs-tchs;
if (zxhs<0)
zxhs=0;
AnsiString ts1="在线用户数:"+IntToStr(zxhs);
StatusBar1->Panels->Items[0]->Text=ts1;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::Timer2Timer(TObject *Sender)
{
AnsiString ts3= DateTimeToStr(Now());
StatusBar1->Panels->Items[2]->Text=ts3;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton2Click(TObject *Sender)
{
Application->HelpCommand(HELP_FINDER, 0);
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::FormCreate(TObject *Sender)
{
ServerSocket1->Open();
AnsiString AppPath=ExtractFilePath(Application->ExeName);
Edit1->Text=AppPath+"bACKUP";
zcyz();
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::RadioButton2Click(TObject *Sender)
{
if(OpenDialog1->Execute())
Edit2->Text=OpenDialog1->FileName;
else
{
Edit2->Text="";
RadioButton1->SetFocus();
RadioButton1->Checked=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton5Click(TObject *Sender)
{
KL=new TKL(this);
KL->ShowModal();
if (!KL->klok)
{
delete KL;
return;
}
else
{
delete KL;
}
Fsjkll=new TFsjkll(Application);
Fsjkll->ShowModal();
delete Fsjkll;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton6Click(TObject *Sender)
{
zc2=new Tzc2(Application);
zc2->ShowModal();
delete zc2;
}
//---------------------------------------------------------------------------
bool TFrmtool::GetAdapterInfo(int nAdapterNum, AnsiString &sMAC)
{
// Reset the LAN adapter so that we can begin querying it
NCB Ncb;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = nAdapterNum;
if (Netbios(&Ncb) != NRC_GOODRET) {
char acTemp[80];
ostrstream outs(acTemp, sizeof(acTemp));
outs << "error " << Ncb.ncb_retcode << " on reset" << ends;
sMAC = acTemp;
return false;
}
// Prepare to get the adapter status block
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = nAdapterNum;
strcpy((char *) Ncb.ncb_callname, "*");
struct ASTAT {
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} Adapter;
memset(&Adapter, 0, sizeof(Adapter));
Ncb.ncb_buffer = (unsigned char *)&Adapter;
Ncb.ncb_length = sizeof(Adapter);
// Get the adapter's info and, if this works, return it in standard,
// colon-delimited form.
if (Netbios(&Ncb) == 0) {
char acMAC[18];
sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X",
int (Adapter.adapt.adapter_address[0]),
int (Adapter.adapt.adapter_address[1]),
int (Adapter.adapt.adapter_address[2]),
int (Adapter.adapt.adapter_address[3]),
int (Adapter.adapt.adapter_address[4]),
int (Adapter.adapt.adapter_address[5]));
sMAC = acMAC;
return true;
}
else {
char acTemp[80];
ostrstream outs(acTemp, sizeof(acTemp));
outs << "error " << Ncb.ncb_retcode << " on ASTAT" << ends;
sMAC = acTemp;
return false;
}
}
//-----------------------------
void TFrmtool::zcyz()
{
TRegistry *reg=new TRegistry();
reg->RootKey=HKEY_CURRENT_USER;
LANA_ENUM AdapterList;
NCB Ncb;
memset(&Ncb, 0, sizeof(NCB));
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (unsigned char *)&AdapterList;
Ncb.ncb_length = sizeof(AdapterList);
Netbios(&Ncb);
AnsiString mac_addr,temp0,temp1="";
AnsiString charset="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (int i = 0; i < AdapterList.length; i++)
{
if (!GetAdapterInfo(AdapterList.lana[0], mac_addr))
{
Application->MessageBox("读取硬件标志错误","错误信息",MB_OK);
break;
}
}
temp0="ZX"+mac_addr.SubString(7,2)+mac_addr.SubString(10,2)
+mac_addr.SubString(13,2)+mac_addr.SubString(16,2);
for(int i=1;i<temp0.Length()+1;i++)
{
int j=1,k;
for(;j<charset.Length()+1;j++)
{
if(temp0[i]==charset[j])
break;
}
k=(j+4)%36+1;
temp1+=charset[k];
}
StatusBar1->Panels->Items[3]->Text="授权号:"+temp1;
int my[]={0,8,15,14,7,20,1,15,11,1,9};
temp="";
for(int i=1;i<11;i++)
{
int ii=1;
for(;ii<37;ii++)
{
if(temp1[i]==charset[ii])
break;
}
int kk=(ii*my[i])%36+1;
temp+=charset[kk];
}
int i;
if(reg->OpenKey("\\software\\Mars\\aptitude",false))
{
authtemp=reg->ReadString("auth_nb");//read the authorization number
if(temp==authtemp)
{
Caption="营业用电后台数据库管理工具(Ver 1.0)";
SpeedButton6->Enabled=false;
}
else
{
Caption="营业用电后台数据库管理工具(Ver 1.0)--无效注册!";
SpeedButton6->Enabled=true;
}
}
else
{
Caption="营业用电后台数据库管理工具(Ver 1.0)--未注册!";
SpeedButton6->Enabled=true;
}
}
//--------------------------------------
void __fastcall TFrmtool::SpeedButton7Click(TObject *Sender)
{
Fver=new TFver(Application);
Fver->ShowModal();
delete Fver;
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
if(temp==authtemp)
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
ServerSocket1->Socket->Connections[i]->SendText("已注册");
else
for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++)
ServerSocket1->Socket->Connections[i]->SendText("未注册");
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::FormCloseQuery(TObject *Sender, bool &CanClose)
{
KL=new TKL(this);
KL->ShowModal();
if (!KL->klok)
{
delete KL;
CanClose = false;
}
else
{
delete KL;
if ( Application->MessageBox("真的要退出系统吗?","提示", MB_YESNO|MB_ICONQUESTION)==IDYES)
CanClose = true;
else
CanClose = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::SpeedButton1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFrmtool::RadioButton1Click(TObject *Sender)
{
Edit2->Text="";
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -