简单远程控制源代码(c)


#define Success 0x01

#define GetDirInfo 0x02

#define ExecFile 0x03

#define GetFile 0x04

#define PutFile 0x05

#define DelFile 0x06

#define DelDir 0x07

#define CreateDir 0x08

#define FileInfo 0x09

#define GetScreen 0x10

#define Getmoses 0x11

#define Lbuttond 0x12

#define Lbuttonu 0x13

#define Rbuttond 0x14

#define Rbuttonu 0x15

#define LbuttonDd 0x16

#define RbuttonDd 0x17

#define MouseWheel 0x18

#define KeyDown 0x19

#define KeyUp 0x20

#define Mbd 0x21

#define Mbu 0x22

#define Mbdd 0x23

typedef struct //命令结构

{

int ID; //命令ID

BYTE lparam[BUF_LEN*2];

int x; //鼠标x

int y; //鼠标y

short z; //滚轮

int key; //键盘

 

}COMMAND;

 

 

 

BOOL CClientView::PreTranslateMessage(MSG* pMsg)

{

// TODO: Add your specialized code here and/or call thebase class

COMMAND command;

if (ifconect!=0)

{

 

if(m_pRecBMPSocket!=NULL)

m_pRecBMPSocket=NULL;//删除原来的套节字

m_pRecBMPSocket=new CSocket;

m_pRecBMPSocket->Create();

if(!m_pRecBMPSocket->Connect(strtemp,2502))

{

//m_pRecBMPSocket->Send(buf1,30);

MessageBox("连接失败");

delete m_pRecBMPSocket ;

m_pRecBMPSocket=NULL;

}

else

{

switch (pMsg->message)

{

case WM_MOUSEMOVE:

memset((char*)&command,0,sizeof(command));

command.ID=Getmoses;

POINT lpPoint;

GetCursorPos(&lpPoint);

command.x=lpPoint.x;

command.y= lpPoint.y;

//char buf1[256];

//sprintf(buf1,"%d %d",command.x, command.y);

// AfxMessageBox(buf1);

//send(*m_pRecBMPSocket,(char*)&command,sizeof(command),0);

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

case WM_KEYDOWN:

memset((char*)&command,0,sizeof(command));

command.ID=KeyDown;

command.key=pMsg->wParam;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

case WM_KEYUP:

memset((char*)&command,0,sizeof(command));

command.ID=KeyUp;

command.key=pMsg->wParam;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_LBUTTONDOWN:

memset((char*)&command,0,sizeof(command));

command.ID=Lbuttond;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_LBUTTONUP:

memset((char*)&command,0,sizeof(command));

command.ID=Lbuttonu;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_RBUTTONDOWN:

memset((char*)&command,0,sizeof(command));

command.ID=Rbuttond;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_RBUTTONUP:

memset((char*)&command,0,sizeof(command));

command.ID=Rbuttonu;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_LBUTTONDBLCLK:

memset((char*)&command,0,sizeof(command));

command.ID=LbuttonDd;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_RBUTTONDBLCLK:

memset((char*)&command,0,sizeof(command));

command.ID=RbuttonDd;

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_MOUSEWHEEL:

memset((char*)&command,0,sizeof(command));

command.ID=MouseWheel;

command.z=(short)HIWORD(pMsg->wParam);

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

//AfxMessageBox(buf1);

break;

case WM_MBUTTONDOWN:

memset((char*)&command,0,sizeof(command));

command.ID=Mbd;

command.z=(short)HIWORD(pMsg->wParam);

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_MBUTTONUP:

memset((char*)&command,0,sizeof(command));

command.ID=Mbu;

command.z=(short)HIWORD(pMsg->wParam);

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

 

case WM_MBUTTONDBLCLK:

memset((char*)&command,0,sizeof(command));

command.ID=Mbdd;

command.z=(short)HIWORD(pMsg->wParam);

m_pRecBMPSocket->Send((char*)&command,sizeof(COMMAND));

break;

}

 

 

}

 

}

 

return CView::PreTranslateMessage(pMsg);

}

 

 

 

在客户端节接收命令:

void CEmployerSocket::OnReceive(int nErrorCode)

{

// TODO: Add your specialized code here and/or call thebase class

 

CSocket::OnReceive(nErrorCode);

 

 

COMMAND command;

BYTE *buf=(BYTE *)malloc(5120);

int rec=Receive(buf,5120,0);

//MsgType[rec-1]='\0';

memcpy(&command,buf,sizeof(COMMAND));

// AfxMessageBox(MsgType);

switch(command.ID)

{

case B:

{

m_pDlg->SendBITMAP(this); //接收类型为b

//发送bitmap结构

}

break;

case D:

{

m_pDlg->SendBitData(this);//发送bitmap的数据

}

break;

case Getmoses:

GetMosesProc(command);

break;

 

case Lbuttond:

LbuttondProc(command);

break;

 

case Lbuttonu:

LbuttonuProc(command);

break;

 

case Rbuttond:

RbuttondProc(command);

break;

 

case Rbuttonu:

RbuttonuProc(command);

break;

 

case LbuttonDd:

LbuttonDdProc(command);

break;

 

case RbuttonDd:

RbuttonDdProc(command);

break;

case Mbd:

MbdProc(command);

break;

 

case Mbu:

MbuProc(command);

break;

 

case Mbdd:

MbddProc(command);

break;

 

case MouseWheel:

MouseWheelProc(command);

break;

 

case KeyDown:

KeyDownProc(command);

break;

 

case KeyUp:

KeyUpProc(command);

break;

default:

break;

 

}

 

 

}

DWORD GetMosesProc (COMMAND command)

{

char buf1[256];

sprintf(buf1,"%d %d",command.x, command.y);

// AfxMessageBox(buf1);

SetCursorPos(command.x, command.y);

return 0;

}

DWORD LbuttondProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

return 0;

}

DWORD LbuttonuProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

return 0;

}

DWORD RbuttondProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);

return 0;

}

DWORD RbuttonuProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

return 0;

}

DWORD LbuttonDdProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

return 0;

}

DWORD RbuttonDdProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);

return 0;

}

DWORD MbdProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);

return 0;

}

DWORD MbuProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);

return 0;

}

DWORD MbddProc(COMMAND command)

{ //AfxMessageBox("dd");

mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);

mouse_event(MOUSEEVENTF_MIDDLEDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_MIDDLEUP,0,0,0,0);

return 0;

}

DWORD MouseWheelProc(COMMAND command)

{

mouse_event(MOUSEEVENTF_WHEEL,0,0,command.z,0);

return 0;

}

DWORD KeyDownProc(COMMAND command)

{

keybd_event(command.key,0,0,0);

//keybd_event(command.key,0,KEYEVENTF_KEYUP,0);

return 0;

}

DWORD KeyUpProc(COMMAND command) //不用

{

// char buf[256];

// sprintf(buf,"%d",command.key);

// AfxMessageBox(buf);

// printf("4");

keybd_event(command.key,0,KEYEVENTF_KEYUP,0);

return 0;

}

 // 添加PreTranslateMessage(MSG* pMsg) 函数可以捕获消息,这里的COMMAND是一个结构体,

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值