谁有远程控制的源代码。或者给我说一下远程控制鼠标和动态从服务端发送频目到客户端的方法,这是mouse_event的示例代码; getCursorpos(&lppoint); setcursorpos(lppoint.x,lppoint.y); mouse_event(mouseventf_leftdown,0,0,0); mouse_event(mouseventf_leftup,0,0,0,0);上面的代码表示双击鼠标。要指示单击,可以使用两只鼠标_Event(放开一次,松开)。请注意,无论是模拟键盘还是鼠标事件,请注意恢复,即按下键松开,键盘对应于键余量;还松开鼠标列表,否则它可能会影响函数远程拦截屏幕显示服务在接收到客户端的屏幕数据请求之后,通过使用当前屏幕设备的句柄,屏幕数据开始打开的内存区域,得到与设备相关的GDI位图;然后设置位数AP信息头,调色板等最后,获得独立于设备的DIB位图。 2.1获取设备相关位[3](DDB)设备相关位(DDB)也称为存储在MFC库中的图形设备接口(GDI)位图。该对象包含与设备关联的GDI模块数据结构。当应用程序被截取屏幕显示数据时,将应用程序填充到打开的兼容存储区域并与CBitMap对象的句柄相关联,从而获得GDI位图数据的备份。但是,由于GDI位图中的位图的布置,在不同类型的计算机之间传递GDI位图毫无意义。因此,需要进一步的转换来获取设备的不可接受的位图DIB。 (1)获取resoluti在当前屏幕上确定拦截屏幕的范围; screenx = getsystemmetrics(sm_cxscreen); screenty = getsystemmetrics(sm_cyscreen); (2)获取屏幕HDC,打开兼容性内存区域,建立兼容性HbitMap; HDC HDCMY = CreateDC(“显示”,NULL,NULL,NULL); HDC HBUFDC = CreateCompatibledc(HDCMY); HbitMap Hbit = CreateCompaultBitBitMap(HDCMY,ScreenX,屏幕); (3)将当前屏幕内容复制到先前打开的内存区域中,获取当前屏幕GDI位图; HBITMAP HOLDBITMAP =(HBITMAP)选择(HBUFDC,HBIT);拉伸(HBUFDC,0,0,ScreenX,屏幕,HDCMY,0,0,Screenx,Screeny,Srccopy); Hbit =(HBITMAP)选择(HBUFDC,HOLDBITMAP; 2.2转换设备相关位图(DDB)到设备的UNCIMHEET [3](DIB)DIB COMES含有颜色信息,可以实现调色板管理,运行Windows的任何计算机都可以处理这个标准的位图格式,BMP文件包含DIB,主要由4个部分的位图文件,位图信息头,调色板,调色板,和DIB图像数据,DDB对DIB的转换实际上包括在DDB中。图像信息,填充DIB划分位图数据独立于设备。最后,标准BMP图像被配置为通过添加位图文件来形成标准BMP图像。 (1)通过位图句柄hbit,获取位图信息,然后填充位mapinfoheader结构,计算infoheader长度,初始化调色板,最后分配存储空间以存储上述信息头和调色板数据; getobject(hbit,sizEOF(位图),(LPSTR)和位图; int ncolors = 1 <<(bitmap.bmPlanes*bitmap.bmBitsPixel);DWORD dwLen=sizeof(BITMAPINFOHEADER)+ncolors*sizeof (RGBQUAD);HANDLE hDib=GlobalAlloc(GMEM_FIXED,dwLen);(2)计算位图数据实际占用的字节数,使其宽度大于或者等于离4最近的整数倍,修正原biSizeImage数值,然后重新计算并分配空间用于存储信息头,调色板和实际图像数据;bi.biSizeImage=((((bi.biWidth*bi.biBitCount)+31)&~31)/8)*bi.biHeight;dwLen += bi.biSizeImage;if(handle=GlobalReAlloc(hDib,dwLen,GMEM_MOVEABLE)) hDib=handle;(3)向开辟的指定存储区域中复制上述信息头、调色板以及实际图像信息3部分数据,最后返回该存储区域的句柄,得到最终的DIB位图;LPBITMAPINFOHEADER lpbi=(LPBITMAPINFOHEADER)hDib;GetDIBits( hdc, bitmap,0L,(DWORD)bi.biHeight,(LPBYTE)lpbi +(bi.biSize+ncolors*sizeof(RGBQUAD)),(LPBITMAPINFO)lpbi,(DWORD)DIB_RGB_COLORS);3 屏幕数据传送控制屏幕数据的传送控制主要在如何确认服务端与客户端之间的连接,服务端如何定时分块发送屏幕数据,客户端如何拼接屏幕数据并显示图像,服务端如何响应客户端的鼠标事件等几个方面。3.1服务端与客户端的连接确认双方连接可以由客户端指定服务端IP地址,或者在子网段内发送通信对方标识,服务端接收到该标识后,向客户端发送确认标识,客户端收到确认信息后,表明双方实现连接。以下代码为客户端程序片断,服务端程序将发送和接收函数的顺序对调即可。char cFlag[8]="CopyScr\0";send(sktClient,cFlag,8,0);//发送client端标志recv(sktClient,cFlag,8,0);//接收server端标志3.2服务端定时分块发送屏幕数据客户端以某一定时器设定为间隔,向服务端请求屏幕数据,服务端收到请求后,首先获取当前屏幕的GDI位图数据,并转化为DIB位图数据,随后采用分块传送的方式,向客户端发送屏幕的位图数据,分块过程如下所示:(1)发送屏幕位图数据的相关信息,诸如尺寸、长度、高度等信息至客户端;send(sktClient,(char*)&ScrInfo,sizeof(ScrInfo)+1,0);(2)分块发送DIB位图数据,以SENDBLOCK为分块尺寸,同时调整当前数据指针位置;LPBYTE plmagePoint=(LPBYTE)hDib;for(WORD i=0;i<(ScrInfo.dwSize/SENDBLOCK);i++){send(sktClient,(char*)plmagePoint,sizeof(BYTE)*SENDBLOCK,0);plmagePoint=plmagePoint + SENDBLOCK;recv(sktClient,(char*)&StopFlag,sizeof(int)+1,0);}(3)当屏幕位图数据不是刚好等于分块尺寸倍数的时候,用于处理余下的数据传送;if (ScrInfo.dwSize %SENDBLOCK)send(sktClient,(char*)plmagePoint,ScrInfo.dwSize%SENDBLOCK,0);3.3客户端拼接屏幕数据并显示图像客户端的屏幕数据拼接程序,刚好与服务端的屏幕数据切分程序相对应,首先是接收屏幕位图相关信息,然后按照指定的分块大小接收屏幕数据,最后将小于分块尺寸的屏幕数据单独进行接收处理,得到服务端完整的一次屏幕数据,位图采用StretchDIBits函数显示。StretchDIBits(dc,0,0,rect.right,rect.bottom,0,0,((LPBITMAPINFOHEADER)SvrData)-> Biwidth,(LPBitMapInfoheader)SVRDATA) - > Biheight,(LPBYTE)SVRDATA +(SIZEOF(BitmapInfoheader)+ Color * sizeof(RGBQuad)),(LPBitmapInfo)SVRDATA,DIB_RGB_COLORS,SRCOPY; 3.4服务响应客户鼠标事件使用鼠标时单击显示服务器的当前屏幕时,客户端程序将记录特定的左/右键,单击/双击,X / Y坐标位置等,作为鼠标事件,服务器被发送到服务器,然后解析服务器,并使相应的响应实现客户端以获取服务器屏幕并控制该功能。 mouse_event(mouseventf_leftdown,0,0,0,getMessageExtrainfo());
C#远程控制桌面源码,C#远程控制桌面源代码 - 我可以尝试一下LookMypc遥控器软件
求关于远程控制的源码和毕业设计,http://www.docin.com/p://www.docin.com/p://www.docin.com/p:04346816.html添加prepranslatemessage(msg * pmsg)函数可以捕获消息,这里的命令是一个结构,#定义成功0x01#define getdireinfo 0x02#define execfile 0x03#define getfile 0x04#define putfile 0x05#define deldir 0x07#define createir 0x08#define fileinfo 0x09#define getscreen 0x10#define lbuttond 0x12#define lbuttonu 0x13#define rbuttont 0x14#定义RButtonu 0x15#define lbuttondd 0x16#define rbuttondd 0x17#定义鼠标轮0x18#define keydown 0x19#define keyup 0x20#define mbd 0x21#define mbdd 0x23typeef struct //命令结构{int id; //命令IDByte LPARAM [BUF_LEN * 2]; int x; //鼠标xint y; //鼠标Yshort Z; //滚动ex键; //键盘}命令; BOOL CCLIENDVIEW :: pretranslatemessage(msg * pmsg){// todo:在此处添加您的专用代码和/或调用基本classcommand命令; 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->发送(buf1,30); MessageBox(“连接失败”);删除m_precbmpsocket; m_precbmpsocket = null;} else {switch(pmsg->消息){case wm_mousemove:memset((char *)&command,0,sizeof(命令)); command.id = getmos;点lppoint; getCursorpos(&lppoint); command.x = lppoint.x; command.y = lppoint.y; // char buf1 [256]; // sprintf(buf1,“%d%d”,command.x,command.y); // afx.MenssageBox(Buf1); //发送(* m_precbmpsocket,(char *)&命令,sizeof(matman),0)m_precbmpsocket-> size(char *)&command,sizeof(命令));打破; case wm_keydown:memset((char *)&command,0,sizeof(命令)); command.id =键盘; command.key = pmsg - > wparam; m_precbmpsocket->发送(char *)和commmand,break;案例wm_keyup:memset((char *)&command,0,sizeof(命令)); command.id = keyup; command.key = pmsg-> wparam; m_precbmpsocket - >发送(char *)&命令,sizeof(命令));打破;案例wm_lbuttondown:memset(char *)&command,0,sizeof(命令)); command.id = lbuttond; m_precbmpsocket->发送((charr)*)&commmand,sizeof(命令));打破; case wm_lbuttonup:memset((char *)&command,0,sizeof(命令)); command.id = lbuttonu; m_precbmpsocket->发送((char *)&command,sizeof命令);打破;案例wm_rbuttondown:memset((char *)和commmand,0,sizeof(命令)); command.id = rbuttont; m_precbmpsocket-> send((char *)&命令,sizeof(commren); case wm_rbuttonup:memset((char *)&command,0,sizeof(命令)); command.id = rbuttonu; m_precbmpsocket-> send((char *)&命令,sizeof(命令)); break; case wm_lbuttondblckk:memset((chainr *)&command,0,sizeof(命令)); command.id = lbuttondd; m_precbmpsocket-> send(char *)&命令, sizeof(命令));打破; case wm_rbuttondblclk:memset((char *)&command,0 sizeof(命令); command.id = rbuttonddd; m_precbmpsocket-> send(char *);弓;案例wm_mousewheel:memset((char *)&命令,0,sizefof (命令))command.id = mousewheel; command.z =(短)hiword(pmsg-> wparam); m_precbmpsocket->发送(char *); // afxmessagebox(buf1);打破; case wm_mbuttondown:memset((char *)&command,0,sizeof(命令)); command.id = MBD; command.z =(short)hiword(pmsg-> wpart); m_precbmpsocket-> send((char *)&命令,sizeof(命令); break; case wm_mbuttonup:memset((char *)&command,0,sizeof(命令)); command.id = mbu; command.z =(短)Hiword(PMSG-> WPART); M_PRECBMPSOCKET->发送(CHAR *)&命令,siadeofmand);打破; case wm_mbuttondblclk:memset((char *)和commmand,0,sizeof(命令)); command.id = mbdd; command.z =(short)hiword(pmsg-> wparam); m_precbmpsocket->发送(char *)和commmand,break;}}} return cview :: pretranslatemessage(pmsg);} rection命令在客户端部分:void cemployersocket :: onreceive(int nerrorcode){// todo:添加您的规范这里的Ialized代码和/或调用基类CSocket :: OnReceive(NERRORCODE);命令命令;字节* buf =(byte *)malloc(5120); int rec =接收(buf,5120,0); // msgtype [rec-1] ='\ 0'; memcpy(&command,buf,sizeof(命令)); // afxmessagebox; switch(command.id){case b:{m_pdlg-> sendbitmap(此); //接收类型是B //发送位图结构}中断; case d:{m_pdlg-> sendbitdata(这个); //发送位图数据}中断;案例getmos:getMoseProc(命令);打破;案例lbuttond:lbuttondproc(命令)中断;案例lbuttonu:lbuttonuproccommand);打破;案例RBUTTOND:RBUTTONDPROC(命令);打破;案例RButtonu:RButtonuProc(命令);打破;案例lbuttondd:lbuttonddproc(命令);打破; case rbuttondd:rbuttonddproc(命令);打破;案例MBD:MBDProc(命令);打破;案例mbu:mbuproc(命令);打破;案例MBDD:MBDDPROC(命令);打破;盒式鼠标轮:MouseWheelProc(命令);打破;案例keydown:keydownproc(命令);打破; case keyup:keyupproc(命令;中断;默认值:break; dword getmoseproc(命令命令){char buf1 [256]; sprintf(buf1,“%d%d”,command.x,command.y); // AFXMensSageBox(Buf1); setCursorpos(command.x,command.y);返回0; dword lbuttondproc(命令命令){mouse_event(mouseventf_leftdown,0,0,0,0);返回0; dword lbuttonuproc(命令命令) {mouse_event(mouseventf_leftup,0,0,0);返回0; dword rbuttondproc(命令命令){mouse_event(mouseventf_rithdown,0,0,0,0);返回0; dword rbuttonuproc(命令命令){mouse_event(mouseventf_rightup, 0,0,0);返回0; dword lbuttonddproc(命令命令){mouse_event(mouseEventf_leftdown,0,0,0,0); mouse_event(mouseventf_leftup,0,0,0,0); mouse_event(mouseventf_leftdown,0,0,0,0); mouse_event(mouseventf_leftup,0,0,0,0);返回0; dword rbuttonddproc(命令命令){mouse_event(mouseventf_ridedown,0,0,0,0); mouse_event(mouseventf_rightup,0,0,0,0); mouse_event(mouseventf_rithdown,0,0,0,0); mouse_event(mouseventf_rightup,0,0,0,0);返回0; dword mbdproc(命令命令){mouse_event(mouseventf_middledown,0,0,0,0);返回0; dword mbuproc(命令命令){mouse_event(mouseEventF_middleup,0,0,0);返回0; dword mbddproc(命令命令){// afxmessagebox(“dd”); mouse_event(mouseventf_middledown,0,0,0); mouse_event(mouseventf_middleup,0,0,0); mouse_event(mouseventf_middled.拥有0,0,0,0); mouse_event(mouseventf_middleup,0,0,0,0。);返回0; dword mousewheelproc(命令命令){mouse_event(mouseventf_wheel,0,0,command.z,0);返回0; dword keydownproc(命令命令){keybd_event(command.key,0,0,0,0); // keybd_event(command.key,0,keyeventf_keyup,0);返回0; dword keyupproc(命令命令)/ / no {// char buf [256]; // sprintf(buf,“%d”,command.key); // afxmessagebox(buf); // printf(“4”); keybd_event(command.key,0,keyeventf_keyup,0);返回0;}
责任编辑(
尤尼斯·卡布尔)
以上就是关于**远程控制源码,java远程控制电脑**的全部内容,了解更多请关注蚂蚁资源网。