一个在windows上的c语言写的简单脚本
新三国杀吧
全部回复
仅看楼主
level 11
9里香 楼主
2025年12月07日 01点12分 1
level 11
9里香 楼主
#include <stdio.h>
#include <windows.h>
#include <time.h> // 用于随机数种子初始化
// ========================= 鼠标操作函数(原功能不变) =========================
/**
* @brief 鼠标移动到指定屏幕坐标
* @param x: 目标横坐标(屏幕左上角为 (0,0))
* @param y: 目标纵坐标
* @return void
*/
void mouse_move(int x, int y) {
SetCursorPos(x, y);
Sleep(50);
}
/**
* @brief 模拟鼠标按键按下
* @param button: 鼠标按键类型(MOUSEEVENTF_LEFTDOWN=左键,MOUSEEVENTF_RIGHTDOWN=右键)
* @return void
*/
void mouse_down(DWORD button) {
mouse_event(button, 0, 0, 0, 0);
Sleep(30);
}
/**
* @brief 模拟鼠标按键松开
* @param button: 鼠标按键类型(MOUSEEVENTF_LEFTUP=左键,MOUSEEVENTF_RIGHTUP=右键)
* @return void
*/
void mouse_up(DWORD button) {
mouse_event(button, 0, 0, 0, 0);
Sleep(30);
}
/**
* @brief 模拟鼠标单击(按下+松开)
* @param x: 单击位置横坐标
* @param y: 单击位置纵坐标
* @param is_left: 是否为左键(1=左键,0=右键)
* @return void
*/
void mouse_click(int x, int y, int is_left) {
mouse_move(x, y);
if (is_left) {
mouse_down(MOUSEEVENTF_LEFTDOWN);
mouse_up(MOUSEEVENTF_LEFTUP);
} else {
mouse_down(MOUSEEVENTF_RIGHTDOWN);
mouse_up(MOUSEEVENTF_RIGHTUP);
}
}
/**
* @brief 模拟鼠标双击(快速两次单击)
* @param x: 双击位置横坐标
* @param y: 双击位置纵坐标
* @param is_left: 是否为左键(1=左键,0=右键)
* @return void
*/
void mouse_double_click(int x, int y, int is_left) {
mouse_click(x, y, is_left);
Sleep(50);
mouse_click(x, y, is_left);
}
/**
* @brief 模拟鼠标滚轮滚动
* @param delta: 滚动量(正值=向上滚,负值=向下滚,建议步长 120)
* @return void
*/
void mouse_wheel(int delta) {
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, delta, 0);
Sleep(100);
}
// ========================= 键盘操作函数(原功能不变) =========================
/**
* @brief 模拟键盘按键按下(支持单个字符)
* @param key: 按键的虚拟键码(如 'A'、VK_RETURN=回车、VK_BACK=退格)
* @return void
*/
void key_down(int key) {
keybd_event(key, 0, 0, 0);
Sleep(10);
}
/**
* @brief 模拟键盘按键松开
* @param key: 按键的虚拟键码(与 key_down 对应)
* @return void
*/
void key_up(int key) {
keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
Sleep(10);
2025年12月07日 01点12分 2
长度不够,楼下接着发
2025年12月07日 01点12分
level 11
9里香 楼主
========================= 键盘操作函数(原功能不变) =========================
/**
* @brief 模拟键盘按键按下(支持单个字符)
* @param key: 按键的虚拟键码(如 'A'、VK_RETURN=回车、VK_BACK=退格)
* @return void
*/
void key_down(int key) {
keybd_event(key, 0, 0, 0);
Sleep(10);
}
/**
* @brief 模拟键盘按键松开
* @param key: 按键的虚拟键码(与 key_down 对应)
* @return void
*/
void key_up(int key) {
keybd_event(key, 0, KEYEVENTF_KEYUP, 0);
Sleep(10);
}
/**
* @brief 模拟键盘按键单击(按下+松开)
* @param key: 按键的虚拟键码
* @return void
*/
void key_press(int key) {
key_down(key);
key_up(key);
}
/**
* @brief 模拟输入字符串(仅支持 ASCII 可见字符,区分大小写)
* @param str: 要输入的字符串(如 "Hello123!")
* @return void
*/
void type_string(const char* str) {
for (int i = 0; str[i] != '\0'; i++) {
char c = str[i];
// 处理大写字母:需要先按下 Shift 键
if (c >= 'A' && c <= 'Z') {
key_down(VK_SHIFT);
key_press(c);
key_up(VK_SHIFT);
}
// 处理数字/符号(如 !@#$,需配合 Shift)
else if (c == '!' || c == '@' || c == '#' || c == '$' ||
c == '%' || c == '^' || c == '&' || c == '*' ||
c == '(' || c == ')') {
key_down(VK_SHIFT);
key_press(c - '!' + '1');
key_up(VK_SHIFT);
}
// 其他字符(小写字母、数字、普通符号)直接输入
else {
key_press(c);
}
}
}
// ========================= 新增:生成以9开头的6位数 =========================
/**
* @brief 生成以9开头的6位随机数(范围:900000 ~ 999999)
* @return int: 生成的6位数
*/
int generate_9_start_6digit() {
// 以9开头 → 第一位固定为9,后5位为 00000 ~ 99999 → 整体范围 900000 ~ 999999
// rand() % 100000 → 生成 0 ~ 99999 的随机数
return 2100000 + ((rand()*32768+rand()) % 100000);
}
// ========================= 主函数(新增循环+随机数输入) =========================
int main() {
// 初始化随机数种子:用系统当前时间作为种子,保证每次运行生成不同随机数
srand((unsigned int)time(NULL) + GetTickCount()); // 结合时间戳+毫秒数,随机性更强
printf("操作说明:\n");
printf("3秒后开始执行,请切换到目标输入窗口(如记事本、浏览器输入框)\n");
printf("=================================
2025年12月07日 01点12分 3
和上面有重叠的部分,复制的时候注意一下
2025年12月07日 01点12分
level 11
9里香 楼主
以上是脚本的主题
2025年12月07日 01点12分 4
主体
2025年12月07日 01点12分
level 11
9里香 楼主
#include <stdio.h>
#include <windows.h>
/**
* @brief 实时获取并显示鼠标坐标
* @return int: 0=正常退出
*/
int main() {
POINT pt; // Windows 结构体,存储坐标(pt.x=横,pt.y=纵)
printf("===== 鼠标坐标测试程序 =====\n");
printf("操作说明:\n");
printf("1. 移动鼠标,实时显示当前坐标\n");
printf("2. 按 Ctrl+C 退出程序\n");
printf("===========================\n");
// 循环获取坐标(每秒刷新 10 次)
while (1) {
// GetCursorPos: 获取鼠标当前屏幕坐标,存入 pt
if (GetCursorPos(&pt)) {
// 清除当前行并打印新坐标(\r 回到行首,\033[K 清除行尾)
printf("\r当前鼠标坐标:X=%-4d Y=%-4d", pt.x, pt.y);
fflush(stdout); // 强制刷新输出缓冲区,确保实时显示
} else {
printf("\r获取坐标失败!错误码:%d", GetLastError());
}
Sleep(100); // 100ms 刷新一次,平衡实时性和性能
}
return 0;
}
2025年12月07日 01点12分 5
这是用于测量鼠标所在位置的坐标的程序
2025年12月07日 01点12分
level 11
9里香 楼主
下个ide自己编译去,上面是脚本,下面是测量坐标的程序,因为是ai写的没用的东西和注释比较多。你要做的就是用测量坐标的程序把坐标量出来,然后到脚本主函数的while循环里把坐标改成你的,我只有Windows的,如果你是别的ai应该也能帮你改
2025年12月07日 01点12分 6
level 11
9里香 楼主
ide我推荐codeblocks,是免费的,下载好之后创建项目选择console application,把上面的代码复制粘贴进去再编译运行就好了
2025年12月07日 01点12分 7
level 11
9里香 楼主
接下来是一些使用上的问题,我的脚本是生成随机数,范围是一个100000的区间,修改只需要找到生成随机数的函数修改前几位
2025年12月07日 01点12分 8
level 11
9里香 楼主
接下来是最重要的,当你要关掉这个脚本的时候,运行起来的脚本会抢你的鼠标,你需要用快捷键esc,shift,ctrl把任务管理器调出来,在这里不会抢你的鼠标,右键点击程序把它关掉
2025年12月07日 01点12分 9
level 13
话说现在用按键精灵都不怎么给盛典值了,是不是和挖矿一样,那些数字都被老哥们挖完了?
2025年12月07日 01点12分 10
确实少些了,但还能搞
2025年12月07日 01点12分
@9里香 挂了5个多小时了,就出了1000左右盛典值,也没开出个武将宝箱来
2025年12月07日 01点12分
@fly轻轻de飘过 一个小时二百估计是设定的比较慢了,我的速度比你快不少,就是网页卡一下就要重新运行程序
2025年12月07日 01点12分
@fly轻轻de飘过 武将箱子也没用啊,强的应该都有了。剩下一堆垃圾里面,裴秀居然是最强的了。.
2025年12月07日 02点12分
level 11
9里香 楼主
另外因为写的比较简单,没有处理出现一些问题的情况,你可以自己完善,或者盯着,一般刷几百次会出问题
2025年12月07日 01点12分 11
level 11
可惜俺不会只能算了[乖]
2025年12月07日 01点12分 12
level 8
谢谢大佬了,回去了试试[花心]
2025年12月07日 02点12分 13
1