📄 unit1.cpp
字号:
edPassWord->Enabled=(astemp=="1"||astemp=="3");
LBPassWord->Enabled =edPassWord->Enabled;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::FormShow(TObject *Sender)
{
this->PCControl->ActivePageIndex =0;
GAnimateForm(this);
//SpeedButton7->Invalidate();
bbtCall->Invalidate();
Label1->Invalidate();
Label2->Invalidate();
Label3->Invalidate();
Label4->Invalidate();
Label5->Invalidate();
Label6->Invalidate();
Label7->Invalidate();
Label8->Invalidate();
Bevel2->Invalidate();
LBPassWord->Invalidate();
SetForegroundWindow(Handle);
//if(fi.Max)ShowWindow(Handle,SW_SHOWMAXIMIZED);
}
void __fastcall TForLover::FormClose(TObject *Sender, TCloseAction &Action)
{
SaveFinfo();
DelIcon();
if((RBProgEnd->Checked||RBCallEnd->Checked)&&NetHanup()==FALSE)
MessageBox(Handle,"警告:无法断开拨号连接!","警告",MB_OK|MB_ICONERROR);
delete[]lpFileName;
delete[]lpHFileName;
delete[]InfoDat;
delete[]OtherDat;
if(slServerCode)delete slServerCode;
if(slServerAll)delete slServerAll;
if(saywave)delete[]saywave;
if(addwave)delete[]addwave;
if(delwave)delete[]delwave;
if(Form2)delete Form2;
}
//---------------------------------------------------------------------------
void TForLover::SaveFinfo()
{
//
strcpy(fi.SWarning,"不要改动本文件,如果你改动了本文件,请删除!程序会自动生成一个文件!");
strcpy(fi.SWelcome,edWelcome->Text.c_str());
strcpy(fi.SPassword,edSPassword->Text.c_str());
strcpy(fi.SPort,edSPort->Text.c_str());
strcpy(fi.DialName,CBDialList->Text.c_str());
if(RBCallEnd->Checked)
fi.AutoHanup =0;
else if(RBProgEnd->Checked)
fi.AutoHanup =1;
else
fi.AutoHanup =2;
fi.AutoRetry =CBAutoRetry->Checked;
try{fi.AutoRetryTime =EDAutoRetry->Text.ToInt();if(fi.AutoRetryTime<=0||fi.AutoRetryTime>20)throw 1;}
catch(...){ShowMessage("自动重试次数的设置无效!\n将自动重试5次!");fi.AutoRetryTime =5;}
try{fi.CTimeOut=EDCTimeOut->Text.ToInt();if(fi.CTimeOut<=0||fi.CTimeOut>=50)throw 1;}
catch(...){ShowMessage("连接超时的设置无效!\n自动设为8秒!");fi.CTimeOut=8;}
try{fi.STimeOut=EDSTimeOut->Text.ToInt();if(fi.STimeOut<=0||fi.STimeOut>=50)throw 1;}
catch(...){ShowMessage("发送超时的设置无效!\n自动设为8秒!");fi.STimeOut=8;}
try{fi.WTimeOut=EDWTimeOut->Text.ToInt();if(fi.WTimeOut<=0||fi.WTimeOut>=50)throw 1;}
catch(...){ShowMessage("等待超时的设置无效!\n自动设为8秒!");fi.WTimeOut=8;}
fi.imidiate =cbServerImidiate->Enabled ;
fi.proxy.Enabled=cbProxy->Checked;
fi.ServerConnect =cbServerConnect->Checked;
fi.ServerLeave =cbServerLeave->Checked;
fi.ClientSay =cbClientSay->Checked ;
fi.ToolAlign =T1->Checked;
fi.ClientColor =GClient1->Color;
if(edProxyAdd->Text.Length())
strcpy(fi.proxy.Host,edProxyAdd->Text.c_str());
strcpy(fi.proxy.Port,edProxyPort->Text.c_str());
fi.Max =(WindowState==(TWindowState)wsMaximized);
FILE*fp=fopen(InfoDat,"wb");
if(fp)
{
fwrite(&fi,sizeof(fi),1,fp);
fclose(fp);
}
try
{
cbName->Items->SaveToFile(OtherDat);
}
catch(...){}
}
void __fastcall TForLover::cbFriendClick(TObject *Sender)
{
AnsiString asTemp=cbFriend->Items->Strings[cbFriend->ItemIndex];
if(asTemp.Length()==0)return;
acbFriend->ItemIndex =cbFriend->ItemIndex ;
acbFriendClick(NULL);
cbServer->ItemIndex =acbServer->ItemIndex ;
cbServerCode->ItemIndex =acbServerCode->ItemIndex;
edCallNum->Text =aedCallNum->Text;
cbType->ItemIndex=acbCallType->ItemIndex ;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::sbLocalInfoClick(TObject *Sender)
{
char szlocal[256];
gethostname(szlocal,255);
GServer1->Lines->Insert(0,AnsiString("本机名字:")+szlocal);
u_long localip=LocalIp();
if(localip==INADDR_NONE){GServer1->Lines->Insert(0,"获取本机IP失败!");return;}
in_addr inaddr;
inaddr.s_addr=localip;
GServer1->Lines->Insert(0,AnsiString("本机地址:")+inet_ntoa(inaddr));
}
//---------------------------------------------------------------------------
void __fastcall TForLover::sbSBeginClick(TObject *Sender)
{
int lport=CheckPort(edSPort);
if(lport==-1){GServer1->Lines->Insert(0,"端口号必须是1-65535之间的数字");return;}
GServer1->Port =(u_short)lport;
GServer1->Password =edSPassword->Text.Trim();
if(GServer1->Password.Length()==0)
{
edSPassword->Text="NetTime";
GServer1->Password="NetTime";
}
AnsiString asTemp=edWelcome->Text.Trim();
if(asTemp.Length()>50)asTemp=asTemp.SubString(1,50);
GServer1->WelcomMessage =asTemp;
GServer1->Imidiate =cbServerImidiate->Checked;
if(MessageBox(Handle,"目前未连入网络,要拨号连入网络吗?","问题",MB_YESNO|MB_ICONQUESTION)==ID_YES&&CheckNet()==FALSE)return;
ServerEnable(GServer1->Listen());
sbLocalInfoClick(NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForLover::ServerEnable(bool isEnable)
{
sbSEnd->Enabled =isEnable;
sbSystem->Enabled =isEnable;
sbCloseDoor->Enabled =isEnable;
sbKick->Enabled =isEnable;
sbSBegin->Enabled =!isEnable;
edSPort->Enabled=!isEnable;
edSPassword->Enabled=!isEnable;
edWelcome->Enabled =!isEnable;
}
void __fastcall TForLover::sbCloseDoorClick(TObject *Sender)
{
GServer1->DoorClose=sbCloseDoor->Down;
if(sbCloseDoor->Down)
sbCloseDoor->Caption="开门";
else
sbCloseDoor->Caption="关门";
}
//---------------------------------------------------------------------------
void __fastcall TForLover::ListView1Editing(TObject *Sender,
TListItem *Item, bool &AllowEdit)
{
AllowEdit=false;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::sbCConnectClick(TObject *Sender)
{
TForm2*CForm2=new TForm2(this);
CForm2->ShowModal();
if(CForm2->ModalResult==(TModalResult)mrCancel)
{
delete CForm2;
return;
}
delete CForm2;
if(MessageBox(Handle,"目前未连入网络,要拨号连入网络吗?","问题",MB_YESNO|MB_ICONQUESTION)==ID_YES&&CheckNet()==FALSE)
return;
if(GClient1->Connect())
{
sbCConnect->Enabled=false;
sbCCancel->Enabled =true;
Timer3->Enabled =true;
}
}
//---------------------------------------------------------------------------
void __fastcall TForLover::sbCDisConnectClick(TObject *Sender)
{
GClient1->Close();
Timer3->Enabled =false;
TBConnect->ImageIndex =65;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::btCSendClick(TObject *Sender)
{
edCText->Text=edCText->Text.Trim();
if(edCText->Text.Length()==0)return;
GClient1->Write(edCText->Text.c_str(),edCText->Text.Length(),0);
edCText->Clear();
edCText->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForLover::cbProxyClick(TObject *Sender)
{
GroupBox2->Enabled=cbProxy->Checked;
Label17->Enabled=cbProxy->Checked;
Label18->Enabled=cbProxy->Checked;
fi.proxy.Enabled =cbProxy->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbSaveClick(TObject *Sender)
{
AnsiString asTemp=acbFriend->Text.Trim();
char cTemp[5];
if(asTemp.Length()==0){MessageBox(NULL,"请输入一个名字!","",MB_OK);return;}
aedCallNum->Text=aedCallNum->Text.Trim();
aedTel->Text =aedTel->Text.Trim();
aedOicq->Text =aedOicq->Text.Trim();
aedAddress->Text=aedAddress->Text.Trim();
wsprintf(cTemp,"%d",acbSex->ItemIndex);
WritePrivateProfileString(asTemp.c_str(),xinbie,cTemp,lpFileName);
wsprintf(cTemp,"%d",acbServer->ItemIndex);
WritePrivateProfileString(asTemp.c_str(),hutai,cTemp,lpFileName);
wsprintf(cTemp,"%d",acbServerCode->ItemIndex);
WritePrivateProfileString(asTemp.c_str(),taihao,cTemp,lpFileName);
WritePrivateProfileString(asTemp.c_str(),haoma,aedCallNum->Text.c_str(),lpFileName);
wsprintf(cTemp,"%d",acbCallType->ItemIndex);
WritePrivateProfileString(asTemp.c_str(),jixin,cTemp,lpFileName);
WritePrivateProfileString(asTemp.c_str(),dianhua,aedTel->Text.c_str(),lpFileName);
WritePrivateProfileString(asTemp.c_str(),oicq,aedOicq->Text.c_str(),lpFileName);
WritePrivateProfileString(asTemp.c_str(),dizhi,aedAddress->Text.c_str(),lpFileName);
GetAllUsers();
acbFriend->Text="";
aedCallNum->Text="";
aedTel->Text="";
aedOicq->Text="";
aedAddress->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbDeleteClick(TObject *Sender)
{
AnsiString asTemp=acbFriend->Text.Trim();
if(asTemp.Length()==0)return;
WritePrivateProfileString(asTemp.c_str(),NULL,NULL,lpFileName);
GetAllUsers();
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbClearClick(TObject *Sender)
{
DeleteFile(lpFileName);
acbFriend->Items->Clear();
cbFriend->Items->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbSSaveClick(TObject *Sender)
{
AnsiString asTemp=acbSName->Text.Trim();
if(asTemp.Length()==0){MessageBox(NULL,"请输入一个名字!","",MB_OK);return;};
if(asTemp!=AnsiString("本地主机"))
{
WritePrivateProfileString(asTemp.c_str(),zdizhi,aedSAddress->Text.c_str(),lpHFileName);
WritePrivateProfileString(asTemp.c_str(),zduankou,aedSPort->Text.c_str(),lpHFileName);
WritePrivateProfileString(asTemp.c_str(),zmima,aedSPassword->Text.c_str(),lpHFileName);
WritePrivateProfileString(asTemp.c_str(),zmiaoshu,ammAbout->Text.c_str(),lpHFileName);
GetAllServers();
}
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbSDeleteClick(TObject *Sender)
{
AnsiString asTemp=acbSName->Text.Trim();
if(asTemp.Length()==0)return;
WritePrivateProfileString(asTemp.c_str(),NULL,NULL,lpHFileName);//
GetAllServers();
}
//---------------------------------------------------------------------------
void __fastcall TForLover::asbSClearClick(TObject *Sender)
{
DeleteFile(lpHFileName);
acbSName->Items->Clear();
acbSName->Items->Add("本地主机");
}
//---------------------------------------------------------------------------
void __fastcall TForLover::acbFriendClick(TObject *Sender)
{
//
AnsiString asTemp=acbFriend->Text.Trim();
if(asTemp.Length()==0)return;
char szTemp[53];
ZeroMemory(szTemp,53);
int iTemp;
acbSex->ItemIndex=GetPrivateProfileInt(asTemp.c_str(),xinbie,0,lpFileName);
acbServer->ItemIndex=GetPrivateProfileInt(asTemp.c_str(),hutai,0,lpFileName);
cbServer->ItemIndex =acbServer->ItemIndex;
cbServerClick(NULL);
acbServerCode->ItemIndex =GetPrivateProfileInt(asTemp.c_str(),taihao,0,lpFileName);
iTemp=GetPrivateProfileString(asTemp.c_str(),haoma,"",szTemp,52,lpFileName);
szTemp[iTemp]='\0';
aedCallNum->Text =AnsiString(szTemp).Trim();
acbCallType->ItemIndex=GetPrivateProfileInt(asTemp.c_str(),jixin,0,lpFileName);
iTemp=GetPrivateProfileString(asTemp.c_str(),dianhua,"",szTemp,52,lpFileName);
szTemp[iTemp]='\0';
aedTel->Text =AnsiString(szTemp).Trim();
iTemp=GetPrivateProfileString(asTemp.c_str(),oicq,"",szTemp,52,lpFileName);
szTemp[iTemp]='\0';
aedOicq->Text =AnsiString(szTemp).Trim();
iTemp=GetPrivateProfileString(asTemp.c_str(),dizhi,"",szTemp,52,lpFileName);
szTemp[iTemp]='\0';
aedAddress->Text =AnsiString(szTemp).Trim();
}
//---------------------------------------------------------------------------
void __fastcall TForLover::acbServerClick(TObject *Sender)
{
cbServer->ItemIndex =acbServer->ItemIndex ;
cbServerClick(NULL);
acbServerCode->Items->Assign(cbServerCode->Items);
acbServerCode->ItemIndex=0;
}
//---------------------------------------------------------------------------
void TForLover::GetAllUsers()
{
char*szNames=new char[1024*30+1],
*szTemp;
acbFriend->Items->Clear();
cbFriend->Items->Clear();
try
{
ZeroMemory(szNames,1024*30);
int Names=GetPrivateProfileSectionNames(szNames,30*1024,lpFileName);
if(Names==0)throw 1;
szTemp=szNames;
if(szTemp[0]==0)throw 1;
do{
acbFriend->Items->Add(szTemp);
szTemp=szTemp+strlen(szTemp)+1;
}while(szTemp[0]!='\0');
}
catch(...){}
delete[]szNames;
cbFriend->Items->Clear();
cbFriend->Items->Assign(acbFriend->Items);
}
void TForLover::GetAllServers()
{
char*szNames=new char[1024*30+1],
*szTemp;
acbSName->Items->Clear();
try
{
ZeroMemory(szNames,1024*30);
int Names=GetPrivateProfileSectionNames(szNames,30*1024,lpHFileName);
if(Names==0)throw 1;
szTemp=szNames;
if(szTemp[0]==0)throw 1;
do{
acbSName->Items->Add(szTemp);
szTemp=szTemp+strlen(szTemp)+1;
}while(szTemp[0]!='\0');
}
catch(...){}
delete[]szNames;
acbSName->Items->Add("本地主机");
}
void __fastcall TForLover::acbSNameClick(TObject *Sender)
{
AnsiString asTemp=acbSName->Text.Trim();
if(asTemp.Length()==0)return;
char szTemp[53];
ZeroMemory(szTemp,53);
int iTemp;
if(asTemp==AnsiString("本地主机"))
{
aedSAddress->Text =AnsiString(inet_ntoa(LocalAddr()));
aedSPort->Text=edSPort->Text;
aedSPassword->Text =edSPassword->Text;
}
else
{
iTemp=GetPrivateProfileString(asTemp.c_str(),zdizhi,"",szTemp,52,lpHFileName);
szTemp[iTemp]='\0';
aedSAddress->Text=AnsiString(szTemp).Trim();
iTemp=GetPrivateProfileString(asTemp.c_str(),zduankou,"80",szTemp,52,lpHFileName);
szTemp[iTemp]='\0';
aedSPort->Text=AnsiString(szTemp).Trim();
iTemp=GetPrivateProfileString(asTemp.c_str(),zmima,"NetTime",szTemp,52,lpHFileName);
szTemp[iTemp]='\0';
aedSPassword->Text =AnsiString(szTemp).Trim();
iTemp=GetPrivateProfileString(asTemp.c_str(),zmiaoshu,"大家好!",szTemp,52,lpHFileName);
szTemp[iTemp]='\0';
ammAbout->Text=AnsiString(szTemp).Trim();
}
}
//---------------------------------------------------------------------------
void __fastcall TForLover::cbServerConnectClick(TObject *Sender)
{
fi.ServerConnect =cbServerConnect->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::cbServerLeaveClick(TObject *Sender)
{
fi.ServerLeave =cbServerLeave->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::cbClientSayClick(TObject *Sender)
{
fi.ClientSay =cbClientSay->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForLover::Timer2Timer(TObject *Sender)
{
if(ModIcon()==false)Timer2->Enabled =false;
}
//---------------------------------------------------------------------------
char* TForLover::LoadWave(char*rsName,char*rsType,HINSTANCE hInst)
{
HRSRC hrsrc;
HGLOBAL hglobal;
if(hInst==NULL)hInst=HInstance;
char*lp,*lpreturn;
DWORD size;
hrsrc=FindResource(hInst,rsName,rsType);
hglobal=LoadResource(hInst,hrsrc);
lp=(char*)LockResource(hglobal);
size=SizeofResource(hInst,hrsrc);
if(size==0)return NULL;
lpreturn=new char[size+1];
memcpy(lpreturn,lp,size);
lpreturn[size]='\0';
GlobalUnlock(hglobal);
GlobalFree(hglobal);
return lpreturn;
}
/*
sndPlaySound((LPCSTR)addwave,SND_ASYNC|SND_MEMORY);
sndPlaySound((LPCSTR)delwave,SND_ASYNC|SND_MEMORY);
sndPlaySound((LPCSTR)saywave,SND_ASYNC|SND_MEMORY);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -