前言:
此刻咱们对“c语言控制鼠标”大体比较珍视,咱们都想要知道一些“c语言控制鼠标”的相关资讯。那么小编同时在网上网罗了一些关于“c语言控制鼠标””的相关知识,希望大家能喜欢,同学们一起来了解一下吧!我叫杰瑞,是一名编程高手,经常发表一些黑客编程教学文章,喜欢的小伙伴赶紧关注我吧!
前言
各位有没有这样一个想法呢——如何自己制作一个远控软件?如果你有这样一个想法的话,那么,恭喜你!今天杰瑞这篇文章就来教教你:如何制作一个远控软件,但就杰瑞个人而言,如果要开发一款完整的远控系统也不太现实,所以今天杰瑞就单独将实现鼠标控制功能的方法给大家分享分享,希望能给你们带来一点收获!
控制端篇(演示)
由于文章篇幅关系,杰瑞将控制端和客户端的教程分开发布,今天给大家带来的是控制端的教程。
程序思路(鼠标控制):
获取本机的鼠标位置将本机的鼠标位置发送给被控端被控端接收控制端发过来的鼠标位置被控端根据控制端的数据重新设置鼠标位置设置完成之后进入“等待”状态,等待控制端下一次发送过来的鼠标位置信息,然后再次循环以上步骤。
由于控制端电脑屏幕与被控端电脑屏幕的尺寸会不一样,所以我们必须创建一个窗口(比本机屏幕小),窗口长宽比与被控端相同,然后将被控端电脑屏幕的图像映射到本机窗口上,这样就能实现对被控端鼠标的精确控制了,但这些都是后话了,因为杰瑞今天仅仅是教大家如何实现“控制鼠标移动”的功能。
代码部分
首先是引用我们所需要的头文件和链接库。
#include<stdio.h>
#include<string.h>
#include<WinSock2.h>
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
制作远控软件就意味着我们需要用到网络,既然用到网络,那么SOCKET是必不可少的,所以我们需要创建一个套接字并开始监听,等待被控端发过来的连接信息。
一般来说,我们进行SCOKET编程之前都需要进行一些操作,杰瑞将这些操作做了总结,大致为以下4步↓
初始化创建套接字设置相关ip、协议族、端口开始监听
创建套接字和建立服务器一共需要用到以下变量,各位可以直接将下面的源码直接照抄。
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文件源码获取方式
先关注《编程高手杰瑞》并点赞文章,然后私信关键字:“鼠标控制源码”即可获取源码!
标签: #c语言控制鼠标