C++ 将光标自身移动到其当前位置
我在一个程序上工作,该程序将光标自身移动到当前位置 我删除了我以前的问题,因为它不是 因此,我的程序是这样工作的,我使用C++ 将光标自身移动到其当前位置,c++,windows,C++,Windows,我在一个程序上工作,该程序将光标自身移动到当前位置 我删除了我以前的问题,因为它不是 因此,我的程序是这样工作的,我使用GetCursorPos函数获取当前光标位置,然后使用SetCursorPos移动光标 我的光标按我所希望的那样移动,但光标位置始终位于屏幕的左上角 我通常不使用使用名称空间std,, 但是在这个简短的程序中,使用它没有问题 这是我目前的代码,有什么建议吗 #include <iostream> #include <Windows.h> #inclu
GetCursorPos
函数获取当前光标位置,然后使用SetCursorPos
移动光标
我的光标按我所希望的那样移动,但光标位置始终位于屏幕的左上角
- 我通常不使用
使用名称空间std代码>,, 但是在这个简短的程序中,使用它没有问题
#include <iostream>
#include <Windows.h>
#include <vector>
using namespace std;
int main()
{
POINT p;
BOOL bPos = GetCursorPos(&p);
while (true) {
int x = rand() % 10;
int y = rand() % 10;
bPos = SetCursorPos(x, y);
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
p点;
BOOL bPos=GetCursorPos&p;
while(true){
int x=rand()%10;
int y=rand()%10;
bPos=SetCursorPos(x,y);
}
返回0;
}
谢谢 首先,有几个问题:
- 包括
和
在这里是无用的 - 保存
函数的返回值,但从不使用它SetCursorPos
- 您从未为
函数设置种子,因此它总是给出相同的结果rand
x
和y
在0-9
范围内随机分配现在,由于坐标
(0;0)
位于左上角,我们可以看到得到结果的原因
您可以通过每次在while
循环中更新当前位置并更改与当前位置对应的坐标来获得所需的行为
#包括
#包括
使用名称空间std;
int main(){
srand(时间(nullptr));
点电流位置;
while(true){
GetCursorPos(当前位置和当前位置);
int offset=rand()%2;
int x_direction=rand()%2==1?1:-1;
int y_direction=rand()%2==1?1:-1;
SetCursorPos(当前_位置.x+(偏移*x_方向),当前_位置.y+(偏移*y_方向));
睡眠(10);
}
返回0;
}
您可能需要做的另一件事是查看
库。它会将您的代码简化为:
#包括//sleep\u for()
#包括
#包括
使用名称空间std;
int main(){
mt19937发动机(随机_装置{}());
均匀分布范围(-1,1);
点电流位置;
while(true){
GetCursorPos(当前位置和当前位置);
SetCursorPos(当前位置x+范围(发动机),当前位置y+范围(发动机));
此线程::睡眠时间(10ms);
}
返回0;
}
注意:更喜欢使用标准的做事方式,在这种情况下是睡觉。你从来不会通过调用
srand
来播种你的随机生成器。每次你都会得到相同的“随机”数。顺便提一下请仔细查看。@JesperJuhl谢谢,我已经解决了,对我的主要问题有什么建议吗?我已经使用了这个变量来设置光标位置,当我使用变量值时,我的光标只是在屏幕上滚动。我希望能够移动鼠标并移动鼠标10个像素,而不是1920和1080,如果我使用1920和1080,我的鼠标正在从当前位置移动1920个皮克斯。谢谢!但这仍然不是我想要做的,让我给我一个肮脏的例子,让我们以“VineMemz”恶意软件为例,你可以看到鼠标正像我想做的那样移动。我只给了这个恶意软件一个例子,如果你想在youtube上搜索VineMemz。请现在查看它。