吹啊!吹啊!我骄傲的放纵··· 写了一上午长篇大论,中午出去吃个饭回了都没了,桑心,蛋疼,心烦,心烦,心烦ing 说了多少遍叫我月城少主!月城少主!!!
开启第一步:nodejs实现复制文本到剪切板!
缘由: 为啥要复制到粘贴板呢,缘由就是robotjs这货不支持输入中文,这个没法说毕竟编程还是老外居多,期间我尝试用 pinyin+空格 按键组合; 就这pinyin能打出多少种情况,, 想想还是算了吧!
思路 定时发消息的思路是这个样子滴 ;用nodejs脚本发请求,并要写的东西放到电脑ctrl+c的内存里面;于是我只用在调试代码中,ctrl+v就行了。当然一切都是程序自己来;说到这里好多人就不用往下看了,因为一切都太简单了;但是有时候看看比较好 毕竟做了才看到有几个坑;
非常简单的功能,但nodejs没有提供。但不要绝望因为nodejs可以调用系统命令,而系统命令中有不少可以操作剪切板的命令,由于系统是windows,所以考虑使用windows cmd命令中的clip,来实现复制到剪切板的功能。
const exec = require(‘child_process').exec;
exec(‘echo 123456 | clip');
1
2
这个就可以了,超级简单啦,这里有问题来了,但这个命令的执行结果,有个我无法忍受的bug:复制出来的文本,最后有个换行符(echo造成的)!
const exec = require('child_process').exec;
exec('<nul (set/p z=123456) | clip');
1
2
So 这样呢,黏贴出来的东西后面有一个空格;这东西没啥大问题反正本人是接受了,不避免有些人无法接受,下面我就告诉大家 那个方法百度一下 到处都是复制就能用;虽然不想说 因为我是不想用 费那么大劲,占那么大内存就为了去一个空格,而且一般程序无影响, 哎 还是复制过来白话一下吧;
// 简单的复制文本到剪切板的函数,参数依次是文本,成功回调
var copyToClipboard = function(text, func) {
// 这种方式最完美,但最麻烦
// 会生成一个批处理文件,一个文本文件,以批处理文件复制文件文件的内容,后又需要删除两个文件。
var temp = 'txt_' + Date.now() + '.txt';
var str = `@echo off
<nul (set/p z=${text}) > ${temp}
clip < ${temp}
del ${temp}
`;
// 这句加入批处理,会导致报错,虽然能执行(复制)成功。原因应该是,del批处理文件自身的时候,nodejs还在使用他
// 'del "%~f0"';
var cmdFile = 'ttzkxlcjv.cmd';
fs.writeFile(cmdFile, str);
exec(cmdFile, function(err, stdout, stderr) {
if (err || stderr) return console.log(err, stdout, stderr);
// 用nodejs删除文件
fs.unlink(cmdFile);
func(text, stdout);
});
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
可以聊一聊基本思路嘛,就是用nodejs的文件读取fs模块 创建一个txt文件把你所写的东西写进去;再用cmd clip的另一个用法,即 clip < a_text.txt,这样会将后面这个文件的内容,复制出来。 这里面还有个小坑。即在批处理文件中,加入del “%~f0”删除自身,本来是可以用的,但在nodejs里执行却会报错,应该是因为批处理文件在执行到删除自身的命令时,进程还被nodejs引用着结果报错了。只有调用nodejs的fs.unlink命令,删除那个批处理文件。
开启第二步:nodejs实现ctrl+v!
一如既往 我开启我得尝试精神; 上期里面不就说了 有一个robot.keyTap("enter"); 就是执行回车的么,脑洞一开 robot.keyTap("ctrl+v"); 是不是就ok了;但是结果不如意啊!不会怎么办?百度啊!啥 百度不到 呃呃 那就翻墙; 翻墙没找到,, 没办法扒源码吧 一翻果然 被我找到一句 t.ok(robot.keyTap("a", "control") === 1, 'successfully tapped "ctrl+a".'); 一看跑不了,就是它; 不明白写程序这个人怎么想的 明明知道 ctrl+a 那个 ctrl非要写成control ··· 在这种情况可以应付一些情况 加一个定时器就可以自己玩耍;鼠标焦点在哪他就一直向里面写东西了;但是有些人就想什么13:14 什么5:21发个消息,那么咱们也就搞一搞!
开启第三步:关于node定时任务发布(后台还是很常用滴)!
安装 npm install node-schedule 就可以了。
1:确定时间
例如:2022年2月2日,22:22 22毫秒执行
var schedule = require("node-schedule");
var date = new Date(2022,2,22,22,22,22);
var j = schedule.scheduleJob(date, function(){
console.log("执行任务");
});
取消任务
j.cancel();
1
2
3
4
5
6
7
8
9
10
11
12
13
2:每小时的固定时间
例如:每小时的40分钟执行
var rule = new schedule.RecurrenceRule();
rule.minute = 40;
//每隔 30 分钟执行
rule.minute = [0, 30];
//每隔 15 分钟执行:
rule.minute = [0, 15, 45];
var j = schedule.scheduleJob(rule, function(){
console.log("执行任务");
});
1
2
3
4
5
6
7
8
9
10
11
12
13
3:一个星期中的某些天的某个时刻执行,
例如:周一到周日的20
var rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [0, new schedule.Range(1, 6)];
rule.hour = 20;
rule.minute = 0;
var j = schedule.scheduleJob(rule, function(){
console.log(“执行任务”);
});
4 :每秒执行
var rule = new schedule.RecurrenceRule();
var times = [];
for(var i=1; i<60; i++){
times.push(i);
}
rule.second = times;
var c=0;
var j = schedule.scheduleJob(rule, function(){
c++;
console.log(c);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
啥? 你想每分钟执行一下,不会? 推荐使用setInterval !!! 话说着说着我就想起 林俊杰的一首歌 Always Oline 你说你一个一直在线的人,人都挂了还在线,绝壁的程序员,还是高程,显然定时任务完不成啊,也许主人公前几年就把人工智能玩66的 只是不幸挂了,想到这里 国家不幸失去以为人才,为祖国感到悲伤 · · · 悲伤结束 看看代码 好像还缺点东西,咱们给加上触发事件吧 ,要不然那些整蛊的人不想用定时任务靠 一个定时器 在哪里走, 开完程序赶紧把 鼠标放回 太 太 乐 哈哈!
Nodejs事件监听键盘按键,鼠标事件;
这个监听事件 不在event模块里面哦!这种资料很难找 在百度都是event监听事件没有node监听键盘鼠标事件 解释也太少,为啥啊? nodejs主做后端,毕竟这种东西偏向dom了嘛, 下面的代码就可以监听键盘上 你输入的按键啦!
var keypress = require('keypress');
keypress(process.stdin);
process.stdin.on('keypress', function (ch, key) {
console.log('got "keypress"', key);
if (key && key.ctrl && key.name == 'c') {
process.stdin.pause();
}
});
process.stdin.setRawMode(true);
process.stdin.resume();
1
2
3
4
5
6
7
8
9
10
11
12
以下这段代码 据说可以检测鼠标按下的事件;亲测 没好使··· 反正我只要找一个触发条件,键盘事件够用了 代码给大家看看 省的你们翻墙去了 也许是我的版本问题吧。。
var keypress = require('keypress');
// 做的过程。stdin的开始发出“mousepress”(和“键盘按键”)事件
keypress(process.stdin);
//您必须启用鼠标事件之前就将开始点击
keypress.enableMouse(process.stdout);
process.stdin.on('mousepress', function (info) {
console.log('got "mousepress" event at %d x %d', info.x, info.y);
});
process.on('exit', function () {
// 禁用鼠标在退出时,终端stateis恢复正常
keypress.disableMouse(process.stdout);
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
完成的代码
//定时任务小程序!
/*第一步 --nodejs实现复制文本到剪切板*/
const exec = require('child_process').exec,
robot = require("robotjs"),
keypress = require('keypress');
keypress(process.stdin);
// listen for the "keypress" event
process.stdin.on('keypress', function(ch, key) {
if (key && key.ctrl && key.name == 'c') {
process.stdin.pause();
}
console.log('got "keypress"', key);
if(key.sequence == '\t') {
//初始化时间
var a = parseInt(3000);
exec('<nul (set/p z=月城大人大驾光临! ) | clip');
//定时器
setInterval(function() {
if (a!=3000) {
//粘贴板文字
exec('<nul (set/p z=月城大人回来了 距离上次回来时间:' + a + '毫秒) | clip');
}
robot.keyTap("v", "control");
robot.keyTap("enter");
a = parseInt(1000 * Math.random() + 1000);
}, a);
}
});
process.stdin.setRawMode(true);
process.stdin.resume();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
俺们主要目的就是娱乐骚扰好友,就不用定时任务了;你们也可以把预划的东西写下来 挨个执行;加个好友! 不是有好多交友软件 就是这种傻瓜程序嘛 就是比我的高级一些 多了两个监听嘛!下载软件 加上好友之后···
第一局: 你好 我是小丽,很高兴认识你,我是单身哦;
五秒过后
第二句: 我很无聊呢,你多大了呢;
再有五秒,十秒,
第三局:我是 哪里哪里人 你呢?
第四局 :“您的消息没有发出去呢?请充值为会员 多少 多少 钱!”
别问我怎么知道。。 看朋友这么聊的 哈哈哈哈 · · ·
我不会生产技术,我只是一个技术的搬运工 ,非常感谢看到这里的朋友,祝大家工作顺心,生活愉快