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

📄 main.cpp

📁 C++网络间谍源码
💻 CPP
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <jpeg.hpp>
#pragma hdrstop
#include <stdio.h>

#include "Main.h"
#include "Config.h"
#include "About.h"
#include "Socket.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"

#define CM_ENTIRESCREEN 201   //捕获全屏
#define CM_ACTIVEWINDOW 202   //捕获当前窗口
#define CM_TCPIPMSG		(WM_APP+1000)
TMainForm *MainForm;
//---------------------------------------------------------------------------

__fastcall TMainForm::TMainForm(TComponent *Owner)
	: TForm(Owner)
{
Application->OnMinimize = Mini;
}
void __fastcall TMainForm::Mini(TObject *Sender)
{
 //HWND hWnd = Application->Handle;
 //SendMessage(hWnd,WM_SYSCOMMAND,SW_HIDE,0 );
 Hide();
}
//---------------------------------------------------------------------------
/*
// 捕获当前屏幕并保存到imagestream中
void CaptureImage(int options, int level, int cq, TMemoryStream* imgstream)
{
	LONG width,height;
	RECT capRect;
	HDC DesktopDC;
	switch (options) {
		case CM_ENTIRESCREEN:  // 捕获整个屏幕
			// 取得桌面的矩形区域范围
			GetWindowRect(GetDesktopWindow(),&capRect);
		break;
		case CM_ACTIVEWINDOW:  // 捕获当前窗口
			HWND ForegWin;
			ForegWin = GetForegroundWindow();  // 取得当前窗口句柄
			if (!ForegWin)
				ForegWin = GetDesktopWindow();
			GetWindowRect(ForegWin,&capRect);  // 取得当前窗口的矩形区域范围
		break;
	}

	DesktopDC = GetDC(GetDesktopWindow());  // 创建内存设备描述表
	width = capRect.right - capRect.left;
	height = capRect.bottom - capRect.top;
	Graphics::TBitmap *bBitmap;  // 定义位图变量
	try {
		bBitmap = new Graphics::TBitmap(); // 创建位图
		bBitmap->Width=width;
		bBitmap->Height=height;
		if ((level>0)&&(level<8))
			bBitmap->PixelFormat = TPixelFormat(level);  // 设定色深
		// 拷贝屏幕的指定区域到位图
		BitBlt(bBitmap->Canvas->Handle,0,0,width,height,DesktopDC,
			capRect.left,capRect.top,SRCCOPY);

		if (cq>=0) {
			TJPEGImage *jpeg;
			try {
				jpeg = new TJPEGImage;  // 创建JPEG图象
				jpeg->CompressionQuality = cq;  // 设定图象品质
				jpeg->Assign(bBitmap);  // 将位图转化为JPEG格式
				jpeg->SaveToStream(imgstream);  // 保存JPEG图象信息
			}
			 __finally {
				delete jpeg;  // 释放资源
			}
		}
		else {
			bBitmap->SaveToStream(imgstream);  // 保存位图信息
		}
	}
	__finally {
		delete bBitmap;  // 释放资源
	}
}
*/
// 新建观察窗口
void __fastcall TMainForm::CreateMDIChild1(AnsiString sAddress, int CL, int CQ)
{
	TMDIChild1 *Child1;

	//--- create a new MDI child window ----
	Child1 = new TMDIChild1(Application);
	Child1->RemoteAddress = sAddress;  // 主机IP
	Child1->CL = CL;  // 色深
	Child1->CQ = CQ;  // 品质
 // int sock=Connect_Server(sAddress,LISTENPORT);                     // RemoteAddress, LISTENPORT);
//  Write_Socket(sock, "2\n");
 // AnsiString read=Socket_Readln(sock);
//  ShowMessage(read);

	Child1->Caption = "来自'" + sAddress+"'";
	Child1->Capture();  // 捕获第一屏
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FileNew1Execute(TObject *Sender)
{
	ConfigForm->ShowModal();
	if (ConfigForm->Execute) {
		// 新建观察窗口
		CreateMDIChild1(ConfigForm->ComboBox1->Text,  // 主机IP
		ConfigForm->TrackBar1->Position,  // 色深
		ConfigForm->TrackBar2->Position*10);  // 品质
	}
}
//---------------------------------------------------------------------------


void __fastcall TMainForm::HelpAbout1Execute(TObject *Sender)
{
	AboutBox->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FileExit1Execute(TObject *Sender)
{ TrayMessage(NIM_DELETE); //发送图标变换消息

  Close();
  Application->Terminate ();

}
//---------------------------------------------------------------------------

/*// 捕获并发送自己的屏幕图象
void __fastcall TMainForm::ServerSocket1ClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
	AnsiString sRecvString = Socket->ReceiveText();  // 保存接收到的字符串
	AnsiString sRemoteAddress = Socket->RemoteAddress;  // 保存对方IP
	int CL,CQ;
	u_short port;
  int CmdType;

	// 将接收到的字符串分解为命令类别、接收端口、色深、品质4个参数
  int pos = sRecvString.Pos("\n");
  // 命令类别
  // 1:请求图象发送(附加参数:接收端口、色深、品质)
  // 2:请求目标机屏幕分辨率(附加参数:无)
  // 3:接收鼠标信息(附加参数:鼠标命令、X坐标、Y坐标)
  // 4:
  CmdType=StrToIntDef(sRecvString.SubString(1,pos-1),0);
  sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);
  pos = sRecvString.Pos("\n");

  switch(CmdType)
    {
    case 1://请求图象发送

    	// 接收端口
    	port = u_short(StrToIntDef(sRecvString.SubString(1,pos-1),0));
    	sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);

    	pos = sRecvString.Pos("\n");
    	// 色深
    	CL = StrToIntDef(sRecvString.SubString(1,pos-1),0);
    	sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);

    	pos = sRecvString.Pos("\n");
    	// 品质
    	CQ = StrToIntDef(sRecvString.SubString(1,pos-1),0);

    	if (port) {
    		TMemoryStream *ImageStream;  // 定义数据流
    		try {
    			ImageStream = new TMemoryStream;  // 分配内存
    			// 捕获当前屏幕并保存到ImageStream中
    			CaptureImage(CM_ENTIRESCREEN, CL, CQ, ImageStream);
    			// 发送ImageStream到接收端口
    			if (!SendStream(sRemoteAddress, port, ImageStream))
    				MessageBox(0,"发送数据流失败","鸭嘴兽提示",MB_ICONERROR);
    		}
    		__finally {
    			delete ImageStream;  // 释放资源
    		}
    	}
      break;
    case 2://请求目标机屏幕分辨率
      {
      char str[24];
      int Width=GetSystemMetrics(SM_CXSCREEN);
      int Height=GetSystemMetrics(SM_CYSCREEN);
      sprintf(str,"%d*%d\n",Width,Height);
      Socket->SendText(str);
      }
      break;
    case 3://
      {
      int MouseCmd=StrToIntDef(sRecvString.SubString(1,pos-1),0);
      sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);
      pos = sRecvString.Pos("\n");
      int px=StrToIntDef(sRecvString.SubString(1,pos-1),0);
      sRecvString = sRecvString.SubString(pos+1,sRecvString.Length()-pos);
      pos = sRecvString.Pos("\n");
      int py=StrToIntDef(sRecvString.SubString(1,pos-1),0);
      switch(MouseCmd)
        {
        case 1://WM_MOUSEMOVE
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE,px,py,0,0);
          break;
        case 2://WM_LBUTTONDOWN
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTDOWN,px,py,0,0);
          break;
        case 3://WM_LBUTTONUP
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_LEFTUP,px,py,0,0);
          break;
        case 4://WM_RBUTTONDOWN
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTDOWN,px,py,0,0);
          break;
        case 5://WM_RBUTTONUP
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_RIGHTUP,px,py,0,0);
          break;
        case 6://WM_MIDBUTTONDOWN
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEDOWN,px,py,0,0);
          break;
        case 7://WM_MIDBUTTONUP
          mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MIDDLEUP,px,py,0,0);
          break;

        default:
          break;
        }
      }
      break;
    default://
      break;
    }

}
//---------------------------------------------------------------------------
*/
/*void __fastcall TMainForm::ServerSocket1ClientError(TObject *Sender,
      TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
	ErrorCode = 0;
	MessageBox(0,"远程连接出错","鸭嘴兽提示",MB_ICONERROR);  // 显示出错信息
}
//---------------------------------------------------------------------------
*/
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
     //	ServerSocket1->Port = LISTENPORT;  // 指定监听端口
     //	ServerSocket1->Open();  // 开始监听
         TrayMessage(NIM_ADD);
  TrayMessage(NIM_MODIFY);
  Ns=1;
  Application->OnMinimize = Mini;
}
//---------------------------------------------------------------------------






void __fastcall TMainForm::N2Click(TObject *Sender)
{
	// 是否打开端口允许别人抓屏
  //	N2->Checked = !N2->Checked;
   //	ServerSocket1->Active = N2->Checked;
}
//---------------------------------------------------------------------------



void __fastcall TMainForm::FileCloseItemClick(TObject *Sender)
{
TrayMessage(NIM_DELETE); //发送图标变换消息
Close();
}
//---------------------------------------------------------------------------
bool __fastcall TMainForm::TrayMessage(DWORD dwMessage)
{
        NOTIFYICONDATA tnd;
        PSTR pszTip;
        pszTip = "鸭嘴兽远程监视器";//TipText();
        tnd.cbSize= sizeof(NOTIFYICONDATA); //结构的大小
        tnd.uCallbackMessage = CM_TCPIPMSG; //自定义回调消息,在头文件中声明
        tnd.hWnd= Handle; //接受回调消息的窗口句柄
        lstrcpyn(tnd.szTip,pszTip,sizeof(tnd.szTip));
        tnd.uID = CM_TCPIPMSG; //图标标志号
        tnd.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP; //指定以下三个参数哪个包含有效数据
        if (dwMessage == NIM_MODIFY)
        {
                tnd.hIcon = (HICON)IconHandle(); //取得图标句柄
                if (pszTip)
                        lstrcpyn(tnd.szTip, pszTip, sizeof(tnd.szTip));
                else tnd.szTip[0] = '\0';

        }
        else
        {
                 tnd.hIcon = NULL;
                tnd.szTip[0] = '\0';
        }
      return (Shell_NotifyIcon(dwMessage, &tnd));

        }
//---------------------------------------------------------------------------
//取得图标句柄的函数
HICON __fastcall TMainForm::IconHandle(void)
{
if (Ns==1)
    {
     return (Image1->Picture->Icon->Handle);
      //n是全局变量,1为显示Image1,0为Image2
    }
   else
    {
     return (Image2->Picture->Icon->Handle);
    }
}
//--------------------------------------------------------------------------


void __fastcall TMainForm::Timer1Timer(TObject *Sender)
{
if (Ns==1)//n为图标句柄锁,是全局变量, 1为显示Image1,0为Image2
   {
     Ns=0;
   }
  else
   {
     Ns=1;
   }
  TrayMessage(NIM_MODIFY); //发送图标变换消息

}
//---------------------------------------------------------------------------
void __fastcall TMainForm::TcpipMan( TMessage &Msg )
{
//  CTcpsrServer  *v1file;
 // TCommand      *v1cmd;
  int    new_sockid;
 /**********************************************************/
     POINT MousePos;
     switch(Msg.LParam)
     {
          case WM_RBUTTONUP:
               if (GetCursorPos(&MousePos))
               {    //PopupMenu1->PopupComponent = Fmadm;

                 //   MainMenu1->PopulateOle2Menu   = MainForm;
                    SetForegroundWindow(Handle);
                   // PopupMenu1->Popup(MousePos.x, MousePos.y);
                  //   MainMenu1->Main(MousePos.x, MousePos.y);

               }
               break;
          case WM_LBUTTONDOWN:
               Show();
               break;
          default:
               break;
     }

}








void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{
TrayMessage(NIM_DELETE);
}
//---------------------------------------------------------------------------

/*
void __fastcall TMainForm::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{ char text[32];
    sprintf(text,"4\n%c\n",Key);
 int sock=Connect_Server(RemoteAddress, LISTENPORT);  //连接
Write_Socket(sock, text);         //发送
closesocket(sock);
}
*///---------------------------------------------------------------------------

⌨️ 快捷键说明

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