附送源码!C语言远控软件制作:5分钟学会鼠标控制,低调使用!

附送源码!C语言远控软件制作:5分钟学会鼠标控制,低调使用!

我叫杰瑞,是一名编程高手,经常发表一些黑客编程教学文章,喜欢的小伙伴赶紧关注我吧!


前言

各位有没有这样一个想法呢——如何自己制作一个远控软件?如果你有这样一个想法的话,那么,恭喜你!今天杰瑞这篇文章就来教教你:如何制作一个远控软件,但就杰瑞个人而言,如果要开发一款完整的远控系统也不太现实,所以今天杰瑞就单独将实现鼠标控制功能的方法给大家分享分享,希望能给你们带来一点收获!

附送源码!C语言远控软件制作:5分钟学会鼠标控制,低调使用!

控制端篇(演示)

由于文章篇幅关系,杰瑞将控制端和客户端的教程分开发布,今天给大家带来的是控制端的教程。

程序思路(鼠标控制):

  • 获取本机的鼠标位置
  • 将本机的鼠标位置发送给被控端
  • 被控端接收控制端发过来的鼠标位置
  • 被控端根据控制端的数据重新设置鼠标位置
  • 设置完成之后进入“等待”状态,等待控制端下一次发送过来的鼠标位置信息,然后再次循环以上步骤。

由于控制端电脑屏幕与被控端电脑屏幕的尺寸会不一样,所以我们必须创建一个窗口(比本机屏幕小),窗口长宽比与被控端相同,然后将被控端电脑屏幕的图像映射到本机窗口上,这样就能实现对被控端鼠标的精确控制了,但这些都是后话了,因为杰瑞今天仅仅是教大家如何实现“控制鼠标移动”的功能。

附送源码!C语言远控软件制作:5分钟学会鼠标控制,低调使用!

代码部分

首先是引用我们所需要的头文件和链接库。

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

制作远控软件就意味着我们需要用到网络,既然用到网络,那么SOCKET是必不可少的,所以我们需要创建一个套接字并开始监听,等待被控端发过来的连接信息。

一般来说,我们进行SCOKET编程之前都需要进行一些操作,杰瑞将这些操作做了总结,大致为以下4步↓

  1. 初始化
  2. 创建套接字
  3. 设置相关ip、协议族、端口
  4. 开始监听

创建套接字和建立服务器一共需要用到以下变量,各位可以直接将下面的源码直接照抄。

WSADATA wd;

SOCKET C; //服务器socket

SOCKADDR_IN server_addr; //服务器地址

int ret=0; //判断初始化是否成功

初始化

在使用SOCKKET相关函数之前我们必须初始化,这一步几乎是每一个SOCKKET编程中所要做的。

ret=WSAStartup(MAKEWORD(2,2),&wd); //初始化

if(ret!=0)

{

printf("初始化失败");

Sleep(500);

system("CLS");

return NULL;

}

if( HIBYTE(wd.wVersion)!=2||LOBYTE(wd.wVersion)!=2)

{

printf("初始化异常");

Sleep(500);

WSACleanup();

return NULL;

}

WSAStartup函数完成对Winsock服务的初始化,这个函数的第一个参数接受所使用的socket版本,杰瑞这里使用MAKEWORD(2,2)作为它的第一个参数,而第二各参数则是存放socket信息的变量地址

创建套接字

创建套接字非常简单,仅需一行代码就可完成,socket(使用的协议族,指定socket类型),TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)0)。

C=socket(AF_INET,SOCK_STREAM,0); //创建服务器socket

设置相关信息

一般我们需要设置IP地址,指定所使用的端口号和使用的协议族等,代码具体意思在注释中已经标明。

server_addr.sin_addr.S_un.S_addr=inet_addr("192.168.43.130"); //本机IP地址 自行更换

server_addr.sin_family=AF_INET; //使用ipv4协议族

server_addr.sin_port=htons(6000); //将无符号短整型数值转换成网络字节顺序

bind(C,(SOCKADDR *)&server_addr,sizeof(SOCKADDR)); //将服务器socket绑定到本地端口

开始监听

listen(C,5); //开始监听

等待被控端连接,连接成功后发送鼠标位置信息。

这部分相对比较简单,程序一旦接收到被控端发送过来的信息后,就会将获取当前本机的鼠标位置并发送。

void accept_client(SOCKET C)

{

SOCKET client;//客户端socket

SOCKADDR_IN client_addr;//客户端地址

int len=sizeof(SOCKADDR);///accept()参数

int ret1=0;//判断accept()是否成功

char *IP;//客户端IP地址

char str[150]={0};//发送指令

int num=0;

client=accept(C,(SOCKADDR *)&client_addr,&len);//等待连接

IP=inet_ntoa(client_addr.sin_addr);

printf("%s 连接到控制端\n\n",IP);

POINT p;

char x[50], y[50];

while(1)

{

GetCursorPos(&p);

ltoa(p.x, x, 10);

ltoa(p.y, y, 10);

send(client, x, sizeof(x),0);//发送鼠标坐标字符串

recv(C,&position[0],1,0);

send(client, y, sizeof(y),0);//发送鼠标坐标字符串

recv(C,&position[0],1,0);

}//while()

}//accept_client()

cpp文件源码获取方式

关注《编程高手杰瑞》

点赞文章,然后私信关键字:“鼠标控制源码”即可获取源码!


分享到:


相關文章: