目标
vbs 脚本实现模拟键盘输出 13 种语言拜年, 朗读拜年语音, 之后打开浏览器显示支付宝收钱码, 索要红包(厚脸皮
vbs 拜年文件直接下载传送门 https://github.com/Titordong/SomeThing-Interesting , 喜欢干货的可以直接出发了
准备
玩 vbs 有一段时间了, 对原理感兴趣的可以看一下我上一篇 vbs 的博客, 这篇我会讲的快一点, 没有基础的话可能理解有点困难, 上一篇传送门 https://www.cnblogs.com/Titordong/p/10204042.html
记事本
老规矩了, 记事本写 vbs
模拟键盘代码生成器
vbs 的模拟键盘功能至今没有找到方便的方法, 只能一个字母一个字母去模拟, 但是我们可以用自己写程序的方法, 把想说的话, 转化成 vbs 模拟键盘代码, 这次更深入了解模拟键盘的一些小细节以后, 更新了 vbs 模拟代码生成器的代码, 如下:
- #include<iostream>
- #include<fstream>
- using namespace std;
- int main() {
- ifstream ifile;
- ifile.open("D:\\in.txt");
- ofstream ofile;
- ofile.open("D:\\out.txt");
- char str[100];
- while (ifile.getline(str, 100)) {
- if (str[0] == '\0') {
- ofile << "WS.SendKeys \"{ENTER}\"" << endl << endl<<endl;
- }
- else {
- for (int i(0); i < strlen(str); i++) {
- ofile << "WScript.Sleep AutoTime" << endl;
- if(str[i] == '{') {
- ofile << "WS.SendKeys \"";
- do{
- ofile << str[i];
- } while (str[i++] != '}');
- ofile <<"\""<<endl;
- i--;
- }
- else {
- ofile << "WS.SendKeys \"";
- if (str[i] == '\"')
- ofile << "\"\"\"" << endl;
- else if (str[i] == '(' || str[i] == ')')
- ofile << '{' << str[i] << '}' << "\"" << endl;
- else ofile << str[i] << "\"" << endl;
- }
- }
- ofile << "WScript.Sleep 1000" << endl;
- ofile << "WS.SendKeys \"{ENTER}\"" << endl << endl << endl;
- }
- }
- ofile.close();
- ifile.close();
- return 0;
- }
AutoTime 是两个键之间的敲击间隔, 可以自由设置, 具体看下文
开工
创建 vbs 文件, 做初步准备
在桌面创建记事本文件, 改扩展名为 vbs, 不会改后缀名的请去百度, 键入以下代码
- CreateObject("SAPI.SpVoice").Speak"过年好啊, 我要用 13 种语言给您拜年啦"
- Dim AutoTime
- AutoTime = 50
- Set WS=WScript.CreateObject("WScript.Shell")
- WS.run("notepad"),3
- WScript.Sleep 500
- WS.AppActivate("notepad")
- WS.SendKeys "+"
第一行朗读拜年内容, 可以自己设置, 从第二行到最后都是为了模拟键盘输入做准备, 建立对象, 设置间隔变量 AutoTime, 打开记事本, 停顿 0.5s, 获取记事本焦点(这个非常重要), 切换输入法为英文 WS.SendKeys "+" 这个是模拟键盘按 shift 的意思, 因为我们要用代码拜年, 开头就是用英文写的
生成模拟键盘 vbs 代码
懂 c++ 的同学可能已经注意到了, 上面的 "模拟键盘代码生成器" 中涉及到了一个 in.txt 文件和一个 out.txt 文件, in 就是要显示的文件, 而 out 用来存放根据 in 生成的 vbs 代码, 接下来在 D 盘创建 in.txt(out.txt 程序会自动生成, 不用手动创建), 键入以下内容, 保存关闭
- print_r('+xinniankuaile1+');
- var_dump('+xinniankuaile1+');
- NSLog(@"+xinniankuaile1+");
- System.out.println("+xinniankuaile1+");
- console.log("+xinniankuaile1+");
- print("+xinniankuaile1+");
- printf("+xinniankuaile1+");
- cout<<"+xinniankuaile1+"<< endl;
- Console.WriteLine("+xinniankuaile1+");
- fmt.Println("+xinniankuaile1+");
- Response.Write("+xinniankuaile1+");
- alert("+xinniankuaile1+")
- echo"+xinniankuaile1+"
顺便说一下, 我们要显示的东西时这样子的
- print_r('新年快乐');
- var_dump('新年快乐');
- NSLog(@"新年快乐");
- System.out.println("新年快乐");
- console.log("新年快乐");
- print("新年快乐");
- printf("新年快乐");
- cout<<"新年快乐"<< endl;
- Console.WriteLine("新年快乐");
- fmt.Println("新年快乐");
- Response.Write("新年快乐");
- alert("新年快乐")
- echo"新年快乐"
以第一行 in 的文件为例 print_r('+xinniankuaile1+');, 括号中出现的 + 号如上文所说, 代表 shift 键, 前面已经切成了英文输入法, 现在再切回去, 打 xinniankuaile, 因为输入法自带的联想词语功能, 新年快乐就出现在了第一个(按说谁的输入法都会这样, 按说,,,), 然后按 1 就正好打出了汉字 "新年快乐", 在上一篇博客已经说过了, vbs 是不能直接模拟键盘输入中文的, 因为键盘上没有中文键(什么沙雕逻辑), 所以只能用这种看起来符合日常习惯的方法进行模拟输入, 把新年快乐敲出来以后再一个 +, 把输入法切回英文, 下面的同理
保存以后运行 "模拟键盘代码生成器", 这时候 D 盘就多了 out.txt 文件, 打开以后出现的 7,8 百行代码就是我们需要的东西(对, 就是这么多, 你以为呢), 把这个文件中的所有代码复制, 粘贴到我们上一步新建立的 vbs 文件中
打开支付宝二维码网页, 索要红包(
这之前首先先说几句祝福的话, 再要钱啊, 跟着上面的内容, 键入以下内容
- CreateObject("SAPI.SpVoice").Speak"祝您猪年诸事大吉, 身体健康, 万事如意, 恭喜发财, 红包拿来, 扫码即可哦"
- WScript.Sleep 200
Sleep 是暂停, 暂停 200ms, 给系统一点反应时间, 不然会出 bug, 下面我们做支付宝收钱码链接
先把收钱码上传到图床 (可以把自己的图片挂在网上) 上面, 图床传送门 https://www.superbed.cn/
根据提示上传好后, 保存链接备用
继续, 跟着上面的内容, 键入以下代码
- link()
- Function link()
- Set Seven = WScript.CreateObject("WScript.Shell")
- strDesktop = Seven.SpecialFolders("Desktop")
- set oShellLink = Seven.CreateShortcut(strDesktop & "\Titordong.url")
- oShellLink.TargetPath = "https://ww1.sinaimg.cn/large/007i4MEmgy1fzviwg4l7uj30u01aoag3.jpg"
- oShellLink.Save
- Set oShellLink=Nothing
- strDesktop = Seven.SpecialFolders(4)
- mypath=strDesktop&"\Titordong.url"
- Seven.run mypath
- End Function
第一句是调用函数, 后面是函数的内容, 用来实现, 在桌面创建一个快捷方式并自动打开, 显示你的支付宝收钱码, 注意这行
oShellLink.TargetPath = "https://ww1.sinaimg.cn/large/007i4MEmgy1fzviwg4l7uj30u01aoag3.jpg"
这后面的链接, 是我的收钱码在图床上的链接, 这时候就把刚才保存的你自己的收钱码链接替换上去, 就成自己的了!
搞定收工, 保存退出, 双击运行即可, 记得在运行时鼠标不要点击任何地方, 会出 bug, 学会的小伙伴们, 可以拿去给别人拜年收钱了(233
后记
模拟键盘输入科技感十足, 有一小部分小伙伴电脑不能运行, 呜呜, 没办法了, 正常情况下 Windows 都可以直接运行的
2019/2/5 15:42:19
来源: http://www.bubuko.com/infodetail-2945387.html